Procházet zdrojové kódy

Fix for connection check without starting notifier

Ashley Mills před 7 roky
rodič
revize
89d8ac7044

+ 1 - 1
ReachabilityAppleTVSample/Info.plist

@@ -15,7 +15,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.0</string>
+	<string>4.2.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>

+ 1 - 1
ReachabilityMacSample/Info.plist

@@ -17,7 +17,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.0</string>
+	<string>4.2.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>

+ 1 - 1
ReachabilitySample/Info.plist

@@ -15,7 +15,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.0</string>
+	<string>4.2.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>

+ 1 - 1
ReachabilitySwift.podspec

@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
   s.name         = 'ReachabilitySwift'
-  s.version      = '4.2.0'
+  s.version      = '4.2.1'
   s.module_name = 'Reachability'
   s.homepage     = 'https://github.com/ashleymills/Reachability.swift'
   s.authors      = {

+ 1 - 1
Sources/Info.plist

@@ -15,7 +15,7 @@
 	<key>CFBundlePackageType</key>
 	<string>FMWK</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.1.0</string>
+	<string>4.2.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>

+ 17 - 9
Sources/Reachability.swift

@@ -94,6 +94,10 @@ public class Reachability {
     }
 
     public var connection: Connection {
+        if flags == nil {
+            try? setReachabilityFlags()
+        }
+        
         switch flags?.connection {
         case .none?, nil: return .none
         case .cellular?: return allowsCellularConnection ? .cellular : .none
@@ -171,15 +175,7 @@ public extension Reachability {
         }
 
         // Perform an initial check
-        try reachabilitySerialQueue.sync { [unowned self] in
-            var flags = SCNetworkReachabilityFlags()
-            if !SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags) {
-                self.stopNotifier()
-                throw ReachabilityError.UnableToGetInitialFlags
-            }
-
-            self.flags = flags
-        }
+        try setReachabilityFlags()
 
         notifierRunning = true
     }
@@ -226,6 +222,18 @@ public extension Reachability {
 
 fileprivate extension Reachability {
 
+    func setReachabilityFlags() throws {
+        try reachabilitySerialQueue.sync { [unowned self] in
+            var flags = SCNetworkReachabilityFlags()
+            if !SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags) {
+                self.stopNotifier()
+                throw ReachabilityError.UnableToGetInitialFlags
+            }
+            
+            self.flags = flags
+        }
+    }
+    
     func reachabilityChanged() {
         let block = connection != .none ? whenReachable : whenUnreachable