From ae6d519a33f792172f29f9032af19e38e38ae9b5 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 21 Nov 2012 20:40:05 +0100 Subject: [PATCH 1/2] change reachability target to remove dependency on linphone.org --- Classes/LinphoneManager.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index c5dc70fd1..a20cb47c0 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -690,7 +690,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach - (void)setupNetworkReachabilityCallback { SCNetworkReachabilityContext *ctx=NULL; - const char *nodeName="linphone.org"; + //any internet cnx + struct sockaddr_in zeroAddress; + bzero(&zeroAddress, sizeof(zeroAddress)); + zeroAddress.sin_len = sizeof(zeroAddress); + zeroAddress.sin_family = AF_INET; if (proxyReachability) { [LinphoneLogger logc:LinphoneLoggerLog format:"Cancelling old network reachability"]; @@ -699,8 +703,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach proxyReachability = nil; } - proxyReachability = SCNetworkReachabilityCreateWithName(nil, nodeName); - + proxyReachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress); if (!SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack, ctx)){ [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register reachability cb: %s", SCErrorString(SCError())]; @@ -710,6 +713,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register schedule reachability cb: %s", SCErrorString(SCError())]; return; } + // this check is to know network connectivity right now without waiting for a change. Don'nt remove it unless you have good reason. Jehan + SCNetworkReachabilityFlags flags; + if (SCNetworkReachabilityGetFlags(proxyReachability, &flags)) { + networkReachabilityCallBack(proxyReachability,flags,nil); + } } From c8335833ead074e8fc2a1eb0a09f3acbbbd5b7e5 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 22 Nov 2012 10:18:38 +0100 Subject: [PATCH 2/2] Disable wifi only preference --- Classes/LinphoneCoreSettingsStore.m | 3 +++ Classes/SettingsViewController.m | 2 ++ 2 files changed, 5 insertions(+) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 5badffe2f..6985dbd50 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -594,6 +594,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); BOOL wifiOnly = [self boolForKey:@"wifi_only_preference"]; lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "wifi_only_preference", wifiOnly); + if([self valueChangedForKey:@"wifi_only_preference"]) { + [[LinphoneManager instance] setupNetworkReachabilityCallback]; + } NSString* sharing_server = [self stringForKey:@"sharing_server_preference"]; [[LinphoneManager instance] lpConfigSetString:sharing_server forKey:@"sharing_server_preference"]; diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index a08da9747..f84648481 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -585,6 +585,8 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys addObject:@"incoming_call_timeout_preference"]; [hiddenKeys addObject:@"in_call_timeout_preference"]; + [hiddenKeys addObject:@"wifi_only_preference"]; + [hiddenKeys addObject:@"quit_button"]; // Hide for the moment [hiddenKeys addObject:@"about_button"]; // Hide for the moment