X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/c9a21871b37d415af1d0723715c43bbfae86c25a..82086d6a95408227f929ca149591c6fc3962f043:/NetworkController.m diff --git a/NetworkController.m b/NetworkController.m index 24e8264..ce19757 100755 --- a/NetworkController.m +++ b/NetworkController.m @@ -33,6 +33,8 @@ static NetworkController *sharedController; sharedController = self; browser = [[NSNetServiceBrowser alloc] init]; [browser setDelegate:self]; + rootObject = [[NetworkObject alloc] init]; + serverPort = [[NSSocketPort alloc] initWithTCPPort:SERVER_PORT]; } return self; } @@ -45,6 +47,8 @@ static NetworkController *sharedController; } [serverPass release]; [clientPass release]; + [serverPort release]; + [rootObject release]; [clientProxy release]; [remoteServices release]; [browser release]; @@ -73,13 +77,13 @@ static NetworkController *sharedController; NSData *fullPass; //Turn on NS_DURING - serverPort = [[NSSocketPort alloc] initWithTCPPort:SERVER_PORT]; serverConnection = [[NSConnection alloc] initWithReceivePort:serverPort sendPort:serverPort]; - [serverConnection setRootObject:[[NetworkObject alloc] init]]; + [serverConnection setRootObject:rootObject]; + [rootObject makeValid]; [serverConnection registerName:@"ITMTPlayerHost"]; NS_HANDLER - [[serverConnection rootObject] release]; + [serverConnection setRootObject:nil]; [serverConnection release]; [serverPort release]; ITDebugLog(@"Error starting server!"); @@ -94,7 +98,7 @@ static NetworkController *sharedController; name:name port:SERVER_PORT]; fullPass = [[NSUserDefaults standardUserDefaults] dataForKey:@"sharedPlayerPassword"]; - if (fullPass) { + if ([fullPass length]) { [fullPass getBytes:&buffer range:NSMakeRange(6, 4)]; [serverPass release]; serverPass = [[NSData alloc] initWithBytes:&buffer length:strlen(&buffer)]; @@ -107,8 +111,12 @@ static NetworkController *sharedController; } else if (serverOn && !status && [serverConnection isValid]) { //Turn off [service stop]; + [service release]; + [rootObject invalidate]; [serverConnection registerName:nil]; - [[serverConnection rootObject] release]; + [serverConnection invalidate]; + //[serverConnection setRootObject:nil]; + //[[serverConnection sendPort] autorelease]; [serverConnection release]; ITDebugLog(@"Stopped server."); serverOn = NO; @@ -197,6 +205,7 @@ static NetworkController *sharedController; NSConnection *testConnection; NSSocketPort *testPort; NetworkObject *tempProxy; + BOOL valid; ITDebugLog(@"Checking for shared remote at %@.", host); if (fullPass) { [fullPass getBytes:&buffer range:NSMakeRange(6, 4)]; @@ -213,6 +222,7 @@ static NetworkController *sharedController; [testConnection setReplyTimeout:2]; tempProxy = (NetworkObject *)[testConnection rootProxy]; [tempProxy serverName]; + valid = [tempProxy isValid]; NS_HANDLER ITDebugLog(@"Connection to host failed: %@", host); [testConnection release]; @@ -228,7 +238,19 @@ static NetworkController *sharedController; } [testConnection release]; [testPort release]; - return YES; + return valid; +} + +- (void)resetServerName +{ + if ([self isServerOn]) { + [service stop]; + [service release]; + service = [[NSNetService alloc] initWithDomain:@"" + type:@"_mttp._tcp." + name:[[NSUserDefaults standardUserDefaults] stringForKey:@"sharedPlayerName"] + port:SERVER_PORT]; + } } - (BOOL)isServerOn