From b8631db5df83bb43c202342e3fd28b3b2784ed76 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 18 Apr 2020 15:03:52 -0700 Subject: [PATCH] Allow rediscovery of hosts after deletion without having to force quit the app --- Limelight/Network/DiscoveryManager.h | 1 + Limelight/Network/DiscoveryManager.m | 5 +++++ Limelight/Network/MDNSManager.h | 1 + Limelight/Network/MDNSManager.m | 4 ++++ Limelight/ViewControllers/MainFrameViewController.m | 2 ++ 5 files changed, 13 insertions(+) diff --git a/Limelight/Network/DiscoveryManager.h b/Limelight/Network/DiscoveryManager.h index dfe4535c..211271f5 100644 --- a/Limelight/Network/DiscoveryManager.h +++ b/Limelight/Network/DiscoveryManager.h @@ -21,6 +21,7 @@ - (void) startDiscovery; - (void) stopDiscovery; - (void) stopDiscoveryBlocking; +- (void) resetDiscoveryState; - (BOOL) addHostToDiscovery:(TemporaryHost*)host; - (void) removeHostFromDiscovery:(TemporaryHost*)host; - (void) discoverHost:(NSString*)hostAddress withCallback:(void (^)(TemporaryHost*, NSString*))callback; diff --git a/Limelight/Network/DiscoveryManager.m b/Limelight/Network/DiscoveryManager.m index e029016a..c1451b99 100644 --- a/Limelight/Network/DiscoveryManager.m +++ b/Limelight/Network/DiscoveryManager.m @@ -69,6 +69,11 @@ } +- (void) resetDiscoveryState { + // Allow us to rediscover hosts that were already found before + [_mdnsMan forgetHosts]; +} + - (void) startDiscovery { if (shouldDiscover) { return; diff --git a/Limelight/Network/MDNSManager.h b/Limelight/Network/MDNSManager.h index 44cd4474..1c509944 100644 --- a/Limelight/Network/MDNSManager.h +++ b/Limelight/Network/MDNSManager.h @@ -21,6 +21,7 @@ - (id) initWithCallback:(id) callback; - (void) searchForHosts; - (void) stopSearching; +- (void) forgetHosts; @end diff --git a/Limelight/Network/MDNSManager.m b/Limelight/Network/MDNSManager.m index b745858c..530f47ef 100644 --- a/Limelight/Network/MDNSManager.m +++ b/Limelight/Network/MDNSManager.m @@ -63,6 +63,10 @@ static NSString* NV_SERVICE_TYPE = @"_nvstream._tcp"; [mDNSBrowser stop]; } +- (void) forgetHosts { + [services removeAllObjects]; +} + + (NSString*)sockAddrToString:(NSData*)addrData { char addrStr[INET6_ADDRSTRLEN]; struct sockaddr* addr = (struct sockaddr*)[addrData bytes]; diff --git a/Limelight/ViewControllers/MainFrameViewController.m b/Limelight/ViewControllers/MainFrameViewController.m index dce1b01c..3871645a 100644 --- a/Limelight/ViewControllers/MainFrameViewController.m +++ b/Limelight/ViewControllers/MainFrameViewController.m @@ -829,6 +829,8 @@ static NSMutableSet* hostList; // This will kick off box art caching [self updateHosts]; + // Reset state first so we can rediscover hosts that were deleted before + [_discMan resetDiscoveryState]; [_discMan startDiscovery]; // This will refresh the applist when a paired host is selected