Index: macosx/IPCController.m =================================================================== --- macosx/IPCController.m (revision 4346) +++ macosx/IPCController.m (working copy) @@ -807,16 +807,26 @@ fDefaults = [NSUserDefaults standardUserDefaults]; + int theValue; + switch( msgid ) { case IPC_MSG_GETDOWNLIMIT: - [client sendrespInt:IPC_MSG_DOWNLIMIT tag:tag val:[fDefaults integerForKey:@"DownloadLimit"]]; + if ( [fDefaults boolForKey:@"CheckDownload"] ) + theValue = [fDefaults integerForKey:@"DownloadLimit"]; + else + theValue = -1; + [client sendrespInt:IPC_MSG_DOWNLIMIT tag:tag val:theValue]; break; case IPC_MSG_GETPORT: [client sendrespInt:IPC_MSG_PORT tag:tag val:[fDefaults integerForKey:@"BindPort"]]; break; case IPC_MSG_GETUPLIMIT: - [client sendrespInt:IPC_MSG_UPLIMIT tag:tag val:[fDefaults integerForKey:@"UploadLimit"]]; + if ( [fDefaults boolForKey:@"CheckUpload"] ) + theValue = [fDefaults integerForKey:@"UploadLimit"]; + else + theValue = -1; + [client sendrespInt:IPC_MSG_UPLIMIT tag:tag val:theValue]; break; default: assert( 0 ); @@ -904,7 +914,13 @@ switch( msgid ) { case IPC_MSG_DOWNLIMIT: - [fDefaults setInteger:val->val.i forKey:@"DownloadLimit"]; + if ( val->val.i < 0 ) + [fDefaults setBool:FALSE forKey:@"CheckDownload"]; + else + { + [fDefaults setBool:TRUE forKey:@"CheckDownload"]; + [fDefaults setInteger:val->val.i forKey:@"DownloadLimit"]; + } [fPrefsController updateLimitFields]; [fPrefsController applySpeedSettings: nil]; break; @@ -913,7 +929,13 @@ [fPrefsController updatePortField]; break; case IPC_MSG_UPLIMIT: - [fDefaults setInteger:val->val.i forKey:@"UploadLimit"]; + if ( val->val.i < 0 ) + [fDefaults setBool:FALSE forKey:@"CheckUpload"]; + else + { + [fDefaults setBool:TRUE forKey:@"CheckUpload"]; + [fDefaults setInteger:val->val.i forKey:@"UploadLimit"]; + } [fPrefsController updateLimitFields]; [fPrefsController applySpeedSettings: nil]; break;