git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37546 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2014-01-06 22:27:34 +00:00
parent 00e92f5563
commit 1629bbd638

View file

@ -993,44 +993,48 @@ didUpdateRecordData: (id)data
if (options & NSNetServiceListenForConnections)
{
GSServerStream *serverStream;
NSInteger port;
/* setup server socket first, as port is required in
* -[self addServiceEntry] (see below)
*/
NSInteger port = [self port];
if (port < 0)
{
port = 0;
}
GSServerStream *serverStream = [GSServerStream serverStreamToAddr: @""
port: port];
if (serverStream != nil)
{
[serverStream setDelegate:self];
[serverStream open];
if ([serverStream streamStatus] != NSStreamStatusOpen)
{
ret = 1;
}
else
{
[serverStream scheduleInRunLoop: [NSRunLoop currentRunLoop]
forMode: NSDefaultRunLoopMode];
[self setInfoObject: serverStream forKey: @"serverStream"];
NSNumber *portNumber = [serverStream propertyForKey: GSStreamLocalPortKey];
[self setInfoObject: portNumber forKey: @"port"];
}
}
else
{
ret = 1;
}
port = [self port];
if (port < 0)
{
port = 0;
}
serverStream = [GSServerStream serverStreamToAddr: @"" port: port];
if (serverStream != nil)
{
[serverStream setDelegate:self];
[serverStream open];
if ([serverStream streamStatus] != NSStreamStatusOpen)
{
ret = 1;
}
else
{
NSNumber *portNumber;
if (ret != 0)
{
[self handleError:NSNetServicesBadArgumentError];
[_lock unlock];
return NO;
}
[serverStream scheduleInRunLoop: [NSRunLoop currentRunLoop]
forMode: NSDefaultRunLoopMode];
[self setInfoObject: serverStream forKey: @"serverStream"];
portNumber = [serverStream propertyForKey: GSStreamLocalPortKey];
[self setInfoObject: portNumber forKey: @"port"];
}
}
else
{
ret = 1;
}
if (ret != 0)
{
[self handleError: NSNetServicesBadArgumentError];
[_lock unlock];
return NO;
}
}
/* Try adding the service to the entry group until we find an unused name