sharedController = self;
browser = [[NSNetServiceBrowser alloc] init];
[browser setDelegate:self];
+ rootObject = [[NetworkObject alloc] init];
+ serverPort = [[NSSocketPort alloc] initWithTCPPort:SERVER_PORT];
}
return self;
}
}
[serverPass release];
[clientPass release];
+ [serverPort release];
+ [rootObject release];
[clientProxy release];
[remoteServices release];
[browser release];
{
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 autorelease]];
+ [serverConnection setRootObject:rootObject];
+ [rootObject makeValid];
[serverConnection registerName:@"ITMTPlayerHost"];
NS_HANDLER
- [[serverConnection rootObject] release];
[serverConnection setRootObject:nil];
[serverConnection release];
[serverPort release];
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)];
} else if (serverOn && !status && [serverConnection isValid]) {
//Turn off
[service stop];
- [clientProxy invalidate];
+ [service release];
+ [rootObject invalidate];
[serverConnection registerName:nil];
+ [serverConnection invalidate];
+ //[serverConnection setRootObject:nil];
+ //[[serverConnection sendPort] autorelease];
[serverConnection release];
ITDebugLog(@"Stopped server.");
serverOn = NO;
if (!clientProxy) {
ITDebugLog(@"Null proxy! Couldn't connect!");
[self disconnect];
- return NO;
+ return 0;
}
if ([clientProxy requiresPassword]) {
{
NSData *fullPass = [[NSUserDefaults standardUserDefaults] dataForKey:@"connectPassword"];
unsigned char buffer;
- NSConnection *testConnection;
- NSSocketPort *testPort;
+ NSConnection *testConnection = nil;
+ NSSocketPort *testPort = nil;
NetworkObject *tempProxy;
BOOL valid;
ITDebugLog(@"Checking for shared remote at %@.", host);
host:host];
testConnection = [[NSConnection connectionWithReceivePort:nil sendPort:testPort] retain];
[testConnection setReplyTimeout:2];
+ [testConnection setRequestTimeout:2];
tempProxy = (NetworkObject *)[testConnection rootProxy];
[tempProxy serverName];
valid = [tempProxy isValid];
return NO;
NS_ENDHANDLER
- if (!clientProxy) {
+ if (!tempProxy) {
ITDebugLog(@"Null proxy! Couldn't connect!");
[testConnection release];
[testPort release];
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;
{
ITDebugLog(@"Resolved service named %@.", [sender name]);
[[NSNotificationCenter defaultCenter] postNotificationName:@"ITMTFoundNetService" object:nil];
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"useSharedPlayer"] && !connectedToServer) {
+ [[MainController sharedController] checkForRemoteServerAndConnectImmediately:NO];
+ }
[sender stop];
}