diff --git a/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java index 13024512e..d53d478b2 100644 --- a/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java @@ -322,9 +322,8 @@ public class CharonVpnService extends VpnService implements Runnable } /** - * Set an error on the state service and disconnect the current connection. - * This is not done by calling stopCurrentConnection() above, but instead - * is done asynchronously via state service. + * Set an error on the state service. Called by the handler thread and any + * of charon's threads. * * @param error error state */ @@ -337,7 +336,6 @@ public class CharonVpnService extends VpnService implements Runnable if (!mIsDisconnecting) { mService.setError(error); - mService.disconnect(); } } } diff --git a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java index f0a03a513..160ba951b 100644 --- a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java @@ -313,6 +313,10 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private void clearError() { + if (mService != null) + { + mService.disconnect(); + } mDismissedConnectionID = mErrorConnectionID; updateView(); }