X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/6e637324a7d146b5675fec00c819259d7ac9c244..c9a21871b37d415af1d0723715c43bbfae86c25a:/NetworkController.m diff --git a/NetworkController.m b/NetworkController.m index 230e136..24e8264 100755 --- a/NetworkController.m +++ b/NetworkController.m @@ -14,6 +14,7 @@ #import "NetworkController.h" #import "MainController.h" #import "NetworkObject.h" +#import "PreferencesController.h" #import #import @@ -82,6 +83,7 @@ static NetworkController *sharedController; [serverConnection release]; [serverPort release]; ITDebugLog(@"Error starting server!"); + return; NS_ENDHANDLER ITDebugLog(@"Started server."); if (!name) { @@ -101,6 +103,7 @@ static NetworkController *sharedController; } [service publish]; serverOn = YES; + ITDebugLog(@"Server service published."); } else if (serverOn && !status && [serverConnection isValid]) { //Turn off [service stop]; @@ -112,7 +115,7 @@ static NetworkController *sharedController; } } -- (BOOL)connectToHost:(NSString *)host +- (int)connectToHost:(NSString *)host { NSData *fullPass = [[NSUserDefaults standardUserDefaults] dataForKey:@"connectPassword"]; unsigned char buffer; @@ -132,11 +135,12 @@ static NetworkController *sharedController; clientConnection = [[NSConnection connectionWithReceivePort:nil sendPort:clientPort] retain]; [clientConnection setReplyTimeout:5]; clientProxy = [[clientConnection rootProxy] retain]; + connectedToServer = YES; NS_HANDLER [clientConnection release]; [clientPort release]; ITDebugLog(@"Connection to host failed: %@", host); - return NO; + return 0; NS_ENDHANDLER if (!clientProxy) { @@ -146,22 +150,32 @@ static NetworkController *sharedController; } if ([clientProxy requiresPassword]) { + ITDebugLog(@"Server requires password."); + //Check to see if a password is set in defaults + if ([[NSUserDefaults standardUserDefaults] dataForKey:@"connectPassword"] == nil) { + ITDebugLog(@"Asking for password."); + if (![[PreferencesController sharedPrefs] showPasswordPanel]) { + ITDebugLog(@"Giving up connection attempt."); + [self disconnect]; + return -1; + } + } + + //Send the password ITDebugLog(@"Sending password."); - if (![clientProxy sendPassword:[[NSUserDefaults standardUserDefaults] dataForKey:@"connectPassword"]]) { + while (![clientProxy sendPassword:[[NSUserDefaults standardUserDefaults] dataForKey:@"connectPassword"]]) { ITDebugLog(@"Invalid password!"); - [self disconnect]; - if ( NSRunCriticalAlertPanel(@"Invalid Password", @"The MenuTunes server you attempted to connect to rejected your password. Would you like to try to reconnect?.", @"Yes", @"No", nil) == NSOKButton ) { - return [self connectToHost:host]; - } else { - return NO; + if (![[PreferencesController sharedPrefs] showInvalidPasswordPanel]) { + ITDebugLog(@"Giving up connection attempt."); + [self disconnect]; + return -1; } } } ITDebugLog(@"Connected to host: %@", host); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disconnect) name:NSConnectionDidDieNotification object:clientConnection]; - connectedToServer = YES; - return YES; + return 1; } - (BOOL)disconnect @@ -270,7 +284,6 @@ static NetworkController *sharedController; - (void)netServiceDidResolveAddress:(NSNetService *)sender { ITDebugLog(@"Resolved service named %@.", [sender name]); - NSLog(@"Resolved service named %@.", [sender name]); [[NSNotificationCenter defaultCenter] postNotificationName:@"ITMTFoundNetService" object:nil]; [sender stop]; }