Refactored the Reachability status logic

This commit is contained in:
Kevin Harwood 2012-03-20 11:48:54 -05:00
parent 428c13e1e0
commit 50c136f5d4

View file

@ -354,27 +354,19 @@ static void AFReachabilityReleaseCallback(const void *info) {
BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);
BOOL isNetworkReachable = (isReachable && !needsConnection); BOOL isNetworkReachable = (isReachable && !needsConnection);
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusNotReachable; AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown;
if(isNetworkReachable == NO){ if(isNetworkReachable == NO){
status = AFNetworkReachabilityStatusNotReachable; status = AFNetworkReachabilityStatusNotReachable;
} else { }
#if TARGET_OS_IPHONE #if TARGET_OS_IPHONE
if((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0){ else if((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0){
status = AFNetworkReachabilityStatusReachableViaWWAN; status = AFNetworkReachabilityStatusReachableViaWWAN;
} }
#endif #endif
else {
struct sockaddr_in localWiFiAddress;
memset(&localWiFiAddress, '\0', sizeof(localWiFiAddress));
localWiFiAddress.sin_len = sizeof(localWiFiAddress);
localWiFiAddress.sin_family = AF_INET;
localWiFiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)&localWiFiAddress);
if (reachability != NULL) {
status = AFNetworkReachabilityStatusReachableViaWiFi; status = AFNetworkReachabilityStatusReachableViaWiFi;
} }
}
return status; return status;
} }