diff --git a/ChangeLog b/ChangeLog index 9b3a98b..5fa2149 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ 2014-11-02 Wolfgang Lux - * Frameworks/StepTalk/STRemoteConversation.m (connectionDidDie:): + * Frameworks/StepTalk/STRemoteConversation.m (-open): Force use of + a socket port name server to look up servers on other hosts. + +2014-11-02 Wolfgang Lux + + * Frameworks/StepTalk/STRemoteConversation.m (-connectionDidDie:): Fix leak of the proxy and environmentProcess attributes when a connection died. diff --git a/Frameworks/StepTalk/STRemoteConversation.m b/Frameworks/StepTalk/STRemoteConversation.m index aa96989..8c1b95e 100644 --- a/Frameworks/StepTalk/STRemoteConversation.m +++ b/Frameworks/StepTalk/STRemoteConversation.m @@ -6,6 +6,7 @@ #import #import #import +#import #import "STEnvironment.h" @@ -34,23 +35,29 @@ - (void)open { NSString *envProcName; - - if(connection) + NSPortNameServer *nameServer; + + if (connection) { [NSException raise:@"STConversationException" format:@"Unable to open conversation: already opened."]; return; } - - envProcName = [NSString stringWithFormat:@"STEnvironment:%@", + + envProcName = [NSString stringWithFormat:@"STEnvironment:%@", environmentName]; - connection = [NSConnection connectionWithRegisteredName:envProcName - host:hostName]; + if ([hostName length] > 0) + nameServer = [NSSocketPortNameServer sharedInstance]; + else + nameServer = [NSPortNameServer systemDefaultPortNameServer]; + connection = [NSConnection connectionWithRegisteredName:envProcName + host:hostName + usingNameServer:nameServer]; RETAIN(connection); - if(!connection) + if (!connection) { [NSException raise:@"STConversationException" format:@"Connection failed for environment '%@'", @@ -61,11 +68,11 @@ environmentProcess = RETAIN([connection rootProxy]); proxy = RETAIN([environmentProcess createConversation]); [proxy setProtocolForProxy:@protocol(STConversation)]; - + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(connectionDidDie:) - name: NSConnectionDidDieNotification + name: NSConnectionDidDieNotification object: connection]; } - (void)close