Weeeee. Hopefully fixed more network bugs.
authorKent Sutherland <ksuther@ithinksw.com>
Wed, 10 Dec 2003 00:06:53 +0000 (00:06 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Wed, 10 Dec 2003 00:06:53 +0000 (00:06 +0000)
NetworkController.h
NetworkController.m
NetworkObject.h
NetworkObject.m
StatusWindowController.m
libValidate.a

index 1f1f799..57eee2e 100755 (executable)
     NSMutableArray *remoteServices;
     
     NSConnection *serverConnection, *clientConnection;
-    NSSocketPort *clientPort;
+    NSSocketPort *clientPort, *serverPort;
     NSString *remoteHost;
     BOOL serverOn, clientConnected, connectedToServer;
     NSData *serverPass, *clientPass;
-    NetworkObject *clientProxy;
+    NetworkObject *rootObject, *clientProxy;
 }
 + (NetworkController *)sharedController;
 
index 70994df..6c9631c 100755 (executable)
@@ -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];
@@ -69,19 +73,16 @@ static NetworkController *sharedController;
 {
     if (!serverOn && status) {
         NSString *name = [[NSUserDefaults standardUserDefaults] stringForKey:@"sharedPlayerName"];
-        NSPort *serverPort;
         unsigned char buffer;
         NSData *fullPass;
         //Turn on
         NS_DURING
-            serverPort = [[[NSSocketPort alloc] initWithTCPPort:SERVER_PORT] autorelease];
             serverConnection = [[NSConnection alloc] initWithReceivePort:serverPort
                                                      sendPort:serverPort];
-            clientProxy = [[NetworkObject alloc] init];
-            [serverConnection setRootObject:clientProxy];
+            [serverConnection setRootObject:rootObject];
+            [rootObject makeValid];
             [serverConnection registerName:@"ITMTPlayerHost"];
         NS_HANDLER
-            [clientProxy release];
             [serverConnection setRootObject:nil];
             [serverConnection release];
             [serverPort release];
@@ -110,9 +111,11 @@ static NetworkController *sharedController;
     } else if (serverOn && !status && [serverConnection isValid]) {
         //Turn off
         [service stop];
-        [clientProxy invalidate];
+        [rootObject invalidate];
         [serverConnection registerName:nil];
-        [serverConnection setRootObject:nil];
+        [serverConnection invalidate];
+        //[serverConnection setRootObject:nil];
+        //[[serverConnection sendPort] autorelease];
         [serverConnection release];
         ITDebugLog(@"Stopped server.");
         serverOn = NO;
index 0e185d4..5a3781b 100755 (executable)
@@ -30,5 +30,6 @@
 - (BOOL)sendPassword:(NSData *)password;
 
 - (void)invalidate;
+- (void)makeValid;
 - (BOOL)isValid;
 @end
index a29c3f5..3c941dc 100755 (executable)
     _valid = NO;
 }
 
+- (void)makeValid
+{
+    _valid = YES;
+}
+
 - (BOOL)isValid
 {
     return _valid;
index 293e35c..0a83819 100755 (executable)
@@ -276,5 +276,4 @@ static StatusWindowController *sharedController;
     [_window setLocked:YES];
 }
 
-
 @end
\ No newline at end of file
index 6e7e58d..eb23cd2 100755 (executable)
Binary files a/libValidate.a and b/libValidate.a differ