diff options
Diffstat (limited to 'adb/client/transport_mdns.cpp')
-rw-r--r-- | adb/client/transport_mdns.cpp | 29 |
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 | ||
37 | static DNSServiceRef service_ref; | 37 | static DNSServiceRef service_ref; |
38 | static fdevent service_ref_fde; | 38 | static 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 | ||
94 | class ResolvedService : public AsyncServiceRef { | 93 | class 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 | ||