Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c712f2db authored by Lingfeng Yang's avatar Lingfeng Yang Committed by Joshua Duong
Browse files

make the client browse for appropriate mdns services

This CL makes it so the client looks for the adb secure pairing
and adb secure connect services. Nothing else should happen,
but this should be useful to see if the right packet traffic for
discoverability is happening.

Bug: 111434128, 119490749

Test: N/A
Exempt-From-Owner-Approval: already approved
Change-Id: I266bdb8526cf39bbfa131344dca2b1bb14c14a7b
parent be49d8a2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30,5 +30,6 @@ const char* kADBDNSServices[] = {
};

const int kNumADBDNSServices = arraysize(kADBDNSServices);
const int kADBTransportServiceRefIndex = 0;

#endif
+21 −19
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@
#include "fdevent/fdevent.h"
#include "sysdeps.h"

static DNSServiceRef service_ref;
static DNSServiceRef service_refs[kNumADBDNSServices];
static fdevent* service_ref_fde;

// Use adb_DNSServiceRefSockFD() instead of calling DNSServiceRefSockFD()
@@ -239,14 +239,10 @@ static void DNSSD_API register_resolved_mdns_service(DNSServiceRef sdRef,
    }
}

static void DNSSD_API register_mdns_transport(DNSServiceRef sdRef,
                                              DNSServiceFlags flags,
                                              uint32_t interfaceIndex,
                                              DNSServiceErrorType errorCode,
                                              const char* serviceName,
                                              const char* regtype,
                                              const char* domain,
                                              void*  /*context*/) {
static void DNSSD_API on_service_browsed(DNSServiceRef sdRef, DNSServiceFlags flags,
                                         uint32_t interfaceIndex, DNSServiceErrorType errorCode,
                                         const char* serviceName, const char* regtype,
                                         const char* domain, void* /*context*/) {
    D("Registering a transport.");
    if (errorCode != kDNSServiceErr_NoError) {
        D("Got error %d during mDNS browse.", errorCode);
@@ -262,20 +258,26 @@ static void DNSSD_API register_mdns_transport(DNSServiceRef sdRef,
}

void init_mdns_transport_discovery_thread(void) {
    DNSServiceErrorType errorCode = DNSServiceBrowse(&service_ref, 0, 0, kADBServiceType, nullptr,
                                                     register_mdns_transport, nullptr);
    int errorCodes[kNumADBDNSServices];

    if (errorCode != kDNSServiceErr_NoError) {
        D("Got %d initiating mDNS browse.", errorCode);
        return;
    for (int i = 0; i < kNumADBDNSServices; ++i) {
        errorCodes[i] = DNSServiceBrowse(&service_refs[i], 0, 0, kADBDNSServices[i], nullptr,
                                         on_service_browsed, nullptr);

        if (errorCodes[i] != kDNSServiceErr_NoError) {
            D("Got %d browsing for mDNS service %s.", errorCodes[i], kADBDNSServices[i]);
        }
    }

    if (errorCodes[kADBTransportServiceRefIndex] == kDNSServiceErr_NoError) {
        fdevent_run_on_main_thread([]() {
        service_ref_fde =
            fdevent_create(adb_DNSServiceRefSockFD(service_ref), pump_service_ref, &service_ref);
            service_ref_fde = fdevent_create(
                    adb_DNSServiceRefSockFD(service_refs[kADBTransportServiceRefIndex]),
                    pump_service_ref, &service_refs[kADBTransportServiceRefIndex]);
            fdevent_set(service_ref_fde, FDE_READ);
        });
    }
}

void init_mdns_transport_discovery(void) {
    std::thread(init_mdns_transport_discovery_thread).detach();