diff options
-rw-r--r-- | CyteKit/extern.h | 2 | ||||
-rw-r--r-- | CyteKit/extern.mm | 22 | ||||
-rw-r--r-- | MobileCydia.mm | 28 |
3 files changed, 28 insertions, 24 deletions
diff --git a/CyteKit/extern.h b/CyteKit/extern.h index c7bc270..12d0438 100644 --- a/CyteKit/extern.h +++ b/CyteKit/extern.h @@ -27,4 +27,6 @@ extern bool IsWildcat_; extern CGFloat ScreenScale_; +bool CyteIsReachable(const char *name); + #endif//CyteKit_extern_H diff --git a/CyteKit/extern.mm b/CyteKit/extern.mm index c1dc806..cb8927a 100644 --- a/CyteKit/extern.mm +++ b/CyteKit/extern.mm @@ -20,11 +20,33 @@ /* }}} */ #include <CyteKit/extern.h> + +#include <SystemConfiguration/SystemConfiguration.h> #include <UIKit/UIKit.h> bool IsWildcat_; CGFloat ScreenScale_; +bool CyteIsReachable(const char *name) { + SCNetworkReachabilityFlags flags; { + SCNetworkReachabilityRef reachability(SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, name)); + SCNetworkReachabilityGetFlags(reachability, &flags); + CFRelease(reachability); + } + + // XXX: this elaborate mess is what Apple is using to determine this? :( + // XXX: do we care if the user has to intervene? maybe that's ok? + return + (flags & kSCNetworkReachabilityFlagsReachable) != 0 && ( + (flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0 || ( + (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) != 0 || + (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0 + ) && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0 || + (flags & kSCNetworkReachabilityFlagsIsWWAN) != 0 + ) + ; +} + __attribute__((__constructor__)) void CyteKit_extern() { UIScreen *screen([UIScreen mainScreen]); diff --git a/MobileCydia.mm b/MobileCydia.mm index a661436..9c2b524 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -258,26 +258,6 @@ static NSString *UniqueIdentifier(UIDevice *device = nil) { return [(id)$MGCopyAnswer(CFSTR("UniqueDeviceID")) autorelease]; } -static bool IsReachable(const char *name) { - SCNetworkReachabilityFlags flags; { - SCNetworkReachabilityRef reachability(SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, name)); - SCNetworkReachabilityGetFlags(reachability, &flags); - CFRelease(reachability); - } - - // XXX: this elaborate mess is what Apple is using to determine this? :( - // XXX: do we care if the user has to intervene? maybe that's ok? - return - (flags & kSCNetworkReachabilityFlagsReachable) != 0 && ( - (flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0 || ( - (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) != 0 || - (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0 - ) && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0 || - (flags & kSCNetworkReachabilityFlagsIsWWAN) != 0 - ) - ; -} - static const NSUInteger UIViewAutoresizingFlexibleBoth(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); static _finline NSString *CydiaURL(NSString *path) { @@ -4766,7 +4746,7 @@ class CydiaLogCleaner : } - (NSNumber *) isReachable:(NSString *)name { - return [NSNumber numberWithBool:IsReachable([name UTF8String])]; + return [NSNumber numberWithBool:CyteIsReachable([name UTF8String])]; } - (void) installPackages:(NSArray *)packages { @@ -8800,7 +8780,7 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi } - (bool) requestUpdate { - if (IsReachable("cydia.saurik.com")) { + if (CyteIsReachable("cydia.saurik.com")) { [self beginUpdate]; return true; } else { @@ -8913,7 +8893,7 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi // - We already auto-refreshed this launch. // - Auto-refresh is disabled. // - Cydia's server is not reachable - if (recently || loaded_ || ManualRefresh || !IsReachable("cydia.saurik.com")) { + if (recently || loaded_ || ManualRefresh || !CyteIsReachable("cydia.saurik.com")) { // If we are cancelling, we need to make sure it knows it's already loaded. loaded_ = true; @@ -9540,7 +9520,7 @@ _end } if (interval <= -(15*60)) { - if (IsReachable("cydia.saurik.com")) { + if (CyteIsReachable("cydia.saurik.com")) { [tabbar_ beginUpdate]; [appcache_ reloadURLWithCache:YES]; } |