diff --git a/openbis-ipad/BisKit/Classes/CISDOBConnection.m b/openbis-ipad/BisKit/Classes/CISDOBConnection.m
index 4abc10d77926f91ffe87802a089fbea1969f68d2..5925f6fd1465f47a9ccd52cdb5214a2f0b53a573 100644
--- a/openbis-ipad/BisKit/Classes/CISDOBConnection.m
+++ b/openbis-ipad/BisKit/Classes/CISDOBConnection.m
@@ -28,6 +28,23 @@
 
 NSString *const CISDOBConnectionErrorDomain = @"CISDOBConnectionErrorDomain";
 
+BOOL IsCouldNotConnectToServerError(NSError *error)
+{
+    if (!error) return NO;
+    return ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code);
+}
+
+BOOL IsInternetConnectionOfflineError(NSError *error)
+{
+    if (!error) return NO;
+    return ([NSURLErrorDomain isEqualToString: error.domain] && -1009 == error.code);
+}
+
+BOOL IsSomeKindOfNetworkConnectionError(NSError *error)
+{
+    return IsCouldNotConnectToServerError(error) || IsInternetConnectionOfflineError(error);
+}
+
 
 @interface CISDOBConnection (CISDOBConnectionPrivate)
 
diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m b/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
index 08c28b3de2f61ae696449a71a9bfe46261c0579d..146fad8ad096a783562cf5d317f3c91ff86fbbbb 100644
--- a/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
+++ b/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
@@ -260,7 +260,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
         }
         
         // Check the error -- the server could be unavailable
-        if ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code) {
+        if (IsSomeKindOfNetworkConnectionError(error)) {
             // "Could not connect to the server"
             weakSelf.online = NO;
         }
diff --git a/openbis-ipad/BisKit/Classes/CISDOBShared.h b/openbis-ipad/BisKit/Classes/CISDOBShared.h
index 80f4df855fac94806a249bcefb80822b6f7636ce..727d14d8dc662e8544553d938e57bfd61f26203c 100644
--- a/openbis-ipad/BisKit/Classes/CISDOBShared.h
+++ b/openbis-ipad/BisKit/Classes/CISDOBShared.h
@@ -59,6 +59,15 @@ enum CISOBJsonRpcErrorCode {
     kCISOBJsonRpcError_CallReturnedError = 5,
 };
 
+//! Return true if the error is "Could not connect to server" (Domain=NSURLErrorDomain Code=-1004
+BOOL IsCouldNotConnectToServerError(NSError *error);
+
+//! Return true if the error is "Could not connect to server" (Domain=NSURLErrorDomain Code=-1009
+BOOL IsInternetConnectionOfflineError(NSError *error);
+
+//! Return true either IsCouldNotConnectToServerError or IsInternetConnectionOfflineError
+BOOL IsSomeKindOfNetworkConnectionError(NSError *error);
+
 //
 // Shared preprocessor macros
 //
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
index 012b9bae40417487c12c4e1dd7f85d9fea2cceac..b09f18db207808fe34f0b0654024999532c4c4b4 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
@@ -156,8 +156,7 @@
         [weakSelf didConnectToServer];
     };
     call.fail = ^(NSError *error) {
-        if ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code) {
-            // "Could not connect to the server"
+        if (IsSomeKindOfNetworkConnectionError(error)) {
             [self serverOffline];
         } else {
             [[weakSelf detailViewController] performSegueWithIdentifier: @"ShowLoginDialog" sender: self];