Searches for a missing server when a new one gets registered.
[MenuTunes.git] / NetworkController.m
index 6c9631c..41bf4ac 100755 (executable)
@@ -98,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)];
@@ -111,6 +111,7 @@ static NetworkController *sharedController;
     } else if (serverOn && !status && [serverConnection isValid]) {
         //Turn off
         [service stop];
+        [service release];
         [rootObject invalidate];
         [serverConnection registerName:nil];
         [serverConnection invalidate];
@@ -219,6 +220,7 @@ static NetworkController *sharedController;
                                          host:host];
         testConnection = [[NSConnection connectionWithReceivePort:nil sendPort:testPort] retain];
         [testConnection setReplyTimeout:2];
+        [testConnection setRequestTimeout:2];
         tempProxy = (NetworkObject *)[testConnection rootProxy];
         [tempProxy serverName];
         valid = [tempProxy isValid];
@@ -229,7 +231,7 @@ static NetworkController *sharedController;
         return NO;
     NS_ENDHANDLER
     
-    if (!clientProxy) {
+    if (!tempProxy) {
         ITDebugLog(@"Null proxy! Couldn't connect!");
         [testConnection release];
         [testPort release];
@@ -240,6 +242,18 @@ static NetworkController *sharedController;
     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
 {
     return serverOn;
@@ -294,6 +308,9 @@ static NetworkController *sharedController;
 {
     ITDebugLog(@"Resolved service named %@.", [sender name]);
     [[NSNotificationCenter defaultCenter] postNotificationName:@"ITMTFoundNetService" object:nil];
+    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"useSharedPlayer"] && !connectedToServer) {
+        [[MainController sharedController] checkForRemoteServer];
+    }
     [sender stop];
 }