summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'adb/client/transport_mdns.cpp')
-rw-r--r--adb/client/transport_mdns.cpp29
1 files changed, 13 insertions, 16 deletions
diff --git a/adb/client/transport_mdns.cpp b/adb/client/transport_mdns.cpp
index 3603f0974..283fac554 100644
--- a/adb/client/transport_mdns.cpp
+++ b/adb/client/transport_mdns.cpp
@@ -35,7 +35,7 @@
35#include "sysdeps.h" 35#include "sysdeps.h"
36 36
37static DNSServiceRef service_ref; 37static DNSServiceRef service_ref;
38static fdevent service_ref_fde; 38static fdevent* service_ref_fde;
39 39
40// Use adb_DNSServiceRefSockFD() instead of calling DNSServiceRefSockFD() 40// Use adb_DNSServiceRefSockFD() instead of calling DNSServiceRefSockFD()
41// directly so that the socket is put through the appropriate compatibility 41// directly so that the socket is put through the appropriate compatibility
@@ -68,27 +68,26 @@ class AsyncServiceRef {
68 } 68 }
69 69
70 virtual ~AsyncServiceRef() { 70 virtual ~AsyncServiceRef() {
71 if (! initialized_) { 71 if (!initialized_) {
72 return; 72 return;
73 } 73 }
74 74
75 DNSServiceRefDeallocate(sdRef_); 75 DNSServiceRefDeallocate(sdRef_);
76 fdevent_remove(&fde_); 76 fdevent_destroy(fde_);
77 } 77 }
78 78
79 protected: 79 protected:
80 DNSServiceRef sdRef_; 80 DNSServiceRef sdRef_;
81 81
82 void Initialize() { 82 void Initialize() {
83 fdevent_install(&fde_, adb_DNSServiceRefSockFD(sdRef_), 83 fde_ = fdevent_create(adb_DNSServiceRefSockFD(sdRef_), pump_service_ref, &sdRef_);
84 pump_service_ref, &sdRef_); 84 fdevent_set(fde_, FDE_READ);
85 fdevent_set(&fde_, FDE_READ);
86 initialized_ = true; 85 initialized_ = true;
87 } 86 }
88 87
89 private: 88 private:
90 bool initialized_; 89 bool initialized_ = false;
91 fdevent fde_; 90 fdevent* fde_;
92}; 91};
93 92
94class ResolvedService : public AsyncServiceRef { 93class ResolvedService : public AsyncServiceRef {
@@ -252,14 +251,12 @@ static void DNSSD_API register_mdns_transport(DNSServiceRef sdRef,
252 if (errorCode != kDNSServiceErr_NoError) { 251 if (errorCode != kDNSServiceErr_NoError) {
253 D("Got error %d during mDNS browse.", errorCode); 252 D("Got error %d during mDNS browse.", errorCode);
254 DNSServiceRefDeallocate(sdRef); 253 DNSServiceRefDeallocate(sdRef);
255 fdevent_remove(&service_ref_fde); 254 fdevent_destroy(service_ref_fde);
256 return; 255 return;
257 } 256 }
258 257
259 auto discovered = new DiscoveredService(interfaceIndex, serviceName, 258 auto discovered = new DiscoveredService(interfaceIndex, serviceName, regtype, domain);
260 regtype, domain); 259 if (!discovered->Initialized()) {
261
262 if (! discovered->Initialized()) {
263 delete discovered; 260 delete discovered;
264 } 261 }
265} 262}
@@ -274,9 +271,9 @@ void init_mdns_transport_discovery_thread(void) {
274 } 271 }
275 272
276 fdevent_run_on_main_thread([]() { 273 fdevent_run_on_main_thread([]() {
277 fdevent_install(&service_ref_fde, adb_DNSServiceRefSockFD(service_ref), pump_service_ref, 274 service_ref_fde =
278 &service_ref); 275 fdevent_create(adb_DNSServiceRefSockFD(service_ref), pump_service_ref, &service_ref);
279 fdevent_set(&service_ref_fde, FDE_READ); 276 fdevent_set(service_ref_fde, FDE_READ);
280 }); 277 });
281} 278}
282 279