Fix mDNS overriding manually specified addresses

This commit is contained in:
Cameron Gutman
2017-09-02 19:47:47 -07:00
parent 3464539bd3
commit 832b9189f8
2 changed files with 22 additions and 3 deletions

View File

@@ -102,10 +102,29 @@
TemporaryHost *existingHost = [self getHostInDiscovery:host.uuid];
if (existingHost != nil) {
// Update address of existing host
existingHost.address = existingHost.activeAddress = host.address;
if (host.address != nil) {
existingHost.address = host.address;
}
if (host.localAddress != nil) {
existingHost.localAddress = host.localAddress;
}
if (host.externalAddress != nil) {
existingHost.externalAddress = host.externalAddress;
}
existingHost.activeAddress = host.activeAddress;
return NO;
}
else {
// If we were added without an explicit address,
// populate it from our other available addresses
if (host.address == nil) {
if (host.externalAddress != nil) {
host.address = host.externalAddress;
}
else {
host.address = host.localAddress;
}
}
[_hostQueue addObject:host];
if (shouldDiscover) {
[_opQueue addOperation:[self createWorkerForHost:host]];

View File

@@ -49,8 +49,8 @@ static NSString* NV_SERVICE_TYPE = @"_nvstream._tcp";
for (NSNetService* service in services) {
if (service.hostName != nil) {
TemporaryHost* host = [[TemporaryHost alloc] init];
host.activeAddress = host.address = service.hostName;
host.name = host.address;
host.activeAddress = host.localAddress = service.hostName;
host.name = service.hostName;
[hosts addObject:host];
}
}