From b15d61a5bfda466c2cbfe618331ba49b9bdac21d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 24 Sep 2016 18:53:52 -0700 Subject: [PATCH] Allow existing host to be updated via the Add PC dialog --- Limelight/Network/DiscoveryManager.m | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Limelight/Network/DiscoveryManager.m b/Limelight/Network/DiscoveryManager.m index 6a15e7e4..24dccfc2 100644 --- a/Limelight/Network/DiscoveryManager.m +++ b/Limelight/Network/DiscoveryManager.m @@ -95,14 +95,23 @@ } - (BOOL) addHostToDiscovery:(TemporaryHost *)host { - if (host.uuid.length > 0 && ![self isHostInDiscovery:host]) { + if (host.uuid.length == 0) { + return NO; + } + + TemporaryHost *existingHost = [self getHostInDiscovery:host.uuid]; + if (existingHost != nil) { + // Update address of existing host + existingHost.address = existingHost.activeAddress = host.address; + return NO; + } + else { [_hostQueue addObject:host]; if (shouldDiscover) { [_opQueue addOperation:[self createWorkerForHost:host]]; } return YES; } - return NO; } - (void) removeHostFromDiscovery:(TemporaryHost *)host { @@ -133,14 +142,14 @@ }); } -- (BOOL) isHostInDiscovery:(TemporaryHost*)host { +- (TemporaryHost*) getHostInDiscovery:(NSString*)uuidString { for (int i = 0; i < _hostQueue.count; i++) { TemporaryHost* discoveredHost = [_hostQueue objectAtIndex:i]; - if (discoveredHost.uuid.length > 0 && [discoveredHost.uuid isEqualToString:host.uuid]) { - return YES; + if (discoveredHost.uuid.length > 0 && [discoveredHost.uuid isEqualToString:uuidString]) { + return discoveredHost; } } - return NO; + return nil; } - (NSOperation*) createWorkerForHost:(TemporaryHost*)host {