From: Tobias Brunner Date: Fri, 29 Jun 2018 14:42:18 +0000 (+0200) Subject: android: Simplify error handling in VPN state fragment X-Git-Tag: 5.7.0dr5~20^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3f71118b0814799b6f60eca1a4106d6735eaad56;p=thirdparty%2Fstrongswan.git android: Simplify error handling in VPN state fragment Always reset the error state when disconnecting via state service. This way the error state is also cleared when the connection is terminated directly via control activity. --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java index 0dc3403468..5889293616 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java @@ -262,7 +262,10 @@ public class VpnStateService extends Service */ public void disconnect() { + /* reset any potential retry timer and error state */ resetRetryTimer(); + setError(ErrorState.NO_ERROR); + /* as soon as the TUN device is created by calling establish() on the * VpnService.Builder object the system binds to the service and keeps * bound until the file descriptor of the TUN device is closed. thus diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java index 9c92463dee..edc70fa964 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java @@ -28,7 +28,6 @@ import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; -import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; @@ -44,8 +43,6 @@ import org.strongswan.android.logic.VpnStateService.VpnStateListener; public class VpnStateFragment extends Fragment implements VpnStateListener { - private static final String KEY_ERROR_CONNECTION_ID = "error_connection_id"; - private boolean mVisible; private TextView mProfileNameView; private TextView mProfileView; @@ -59,7 +56,6 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private TextView mErrorText; private Button mErrorRetry; private Button mShowLog; - private long mErrorConnectionID; private VpnStateService mService; private final ServiceConnection mServiceConnection = new ServiceConnection() { @@ -80,17 +76,6 @@ public class VpnStateFragment extends Fragment implements VpnStateListener } } }; - private OnClickListener mDisconnectListener = new OnClickListener() - { - @Override - public void onClick(View v) - { - if (mService != null) - { - mService.disconnect(); - } - } - }; @Override public void onCreate(Bundle savedInstanceState) @@ -104,20 +89,6 @@ public class VpnStateFragment extends Fragment implements VpnStateListener Context context = getActivity().getApplicationContext(); context.bindService(new Intent(context, VpnStateService.class), mServiceConnection, Service.BIND_AUTO_CREATE); - - mErrorConnectionID = 0; - if (savedInstanceState != null && savedInstanceState.containsKey(KEY_ERROR_CONNECTION_ID)) - { - mErrorConnectionID = (Long)savedInstanceState.getSerializable(KEY_ERROR_CONNECTION_ID); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) - { - super.onSaveInstanceState(outState); - - outState.putSerializable(KEY_ERROR_CONNECTION_ID, mErrorConnectionID); } @Override @@ -127,7 +98,12 @@ public class VpnStateFragment extends Fragment implements VpnStateListener View view = inflater.inflate(R.layout.vpn_state_fragment, null); mActionButton = (Button)view.findViewById(R.id.action); - mActionButton.setOnClickListener(v -> clearError()); + mActionButton.setOnClickListener(v -> { + if (mService != null) + { + mService.disconnect(); + } + }); enableActionButton(null); mErrorView = view.findViewById(R.id.vpn_error); @@ -259,7 +235,6 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mErrorView.setVisibility(View.GONE); return false; } - mErrorConnectionID = connectionID; mProfileNameView.setText(name); showProfile(true); mStateView.setText(R.string.state_error); @@ -298,16 +273,4 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mActionButton.setEnabled(text != null); mActionButton.setVisibility(text != null ? View.VISIBLE : View.GONE); } - - private void clearError() - { - if (mService != null) - { - mService.disconnect(); - if (mService.getConnectionID() == mErrorConnectionID) - { - mService.setError(ErrorState.NO_ERROR); - } - } - } }