]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Allow reconnecting without confirmation in case of an error
authorTobias Brunner <tobias@strongswan.org>
Tue, 12 Jun 2018 15:05:00 +0000 (17:05 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 3 Jul 2018 09:31:35 +0000 (11:31 +0200)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileControlActivity.java

index 9bc0cf0320d35d4aac229ce2c25d12105d75f953..6f5cddd95e117b3a8f1c3844a94d578b1ce69ac8 100644 (file)
@@ -191,6 +191,24 @@ public class VpnProfileControlActivity extends AppCompatActivity
                }
        }
 
+       /**
+        * Check if we are currently connected to a VPN connection
+        *
+        * @return true if currently connected
+        */
+       private boolean isConnected()
+       {
+               if (mService == null)
+               {
+                       return false;
+               }
+               if (mService.getErrorState() != VpnStateService.ErrorState.NO_ERROR)
+               {       /* allow reconnecting (even to a different profile) without confirmation if there is an error */
+                       return false;
+               }
+               return (mService.getState() == State.CONNECTED || mService.getState() == State.CONNECTING);
+       }
+
        /**
         * Start the given VPN profile
         *
@@ -207,9 +225,9 @@ public class VpnProfileControlActivity extends AppCompatActivity
 
                removeFragmentByTag(DIALOG_TAG);
 
-               if (mService != null && (mService.getState() == State.CONNECTED || mService.getState() == State.CONNECTING))
+               if (isConnected())
                {
-                       profileInfo.putBoolean(PROFILE_RECONNECT, mService.getProfile().getId() == profile.getId());
+                       profileInfo.putBoolean(PROFILE_RECONNECT, mService.getProfile().getUUID().equals(profile.getUUID()));
 
                        ConfirmationDialog dialog = new ConfirmationDialog();
                        dialog.setArguments(profileInfo);