diff options
Diffstat (limited to 'app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java')
-rw-r--r-- | app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java index 0fae6183..64a87df0 100644 --- a/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java +++ b/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java @@ -212,7 +212,6 @@ public class VpnStatus { } public interface StateListener { - String STATE_CONNECTRETRY = "CONNECTRETRY"; void updateState(String state, String logmessage, int localizedResId, ConnectionStatus level); void setConnectedVPN(String uuid); @@ -328,22 +327,29 @@ public class VpnStatus { String[] connected = {"CONNECTED"}; String[] notconnected = {"DISCONNECTED", "EXITING"}; + /** + * ignore incoming connection/reconnecting states if vpn is about to shut down + */ for (String x : noreplyet) - if (state.equals(x)) + if (state.equals(x) && !mLaststate.equals("STOPPING")) return ConnectionStatus.LEVEL_CONNECTING_NO_SERVER_REPLY_YET; for (String x : reply) - if (state.equals(x)) + if (state.equals(x) && !mLaststate.equals("STOPPING")) return ConnectionStatus.LEVEL_CONNECTING_SERVER_REPLIED; for (String x : connected) - if (state.equals(x)) + if (state.equals(x) && !mLaststate.equals("STOPPING")) return ConnectionStatus.LEVEL_CONNECTED; for (String x : notconnected) if (state.equals(x)) return ConnectionStatus.LEVEL_NOTCONNECTED; + if (mLaststate.equals("STOPPING")) { + return ConnectionStatus.LEVEL_STOPPING; + } + return ConnectionStatus.UNKNOWN_LEVEL; } @@ -377,6 +383,11 @@ public class VpnStatus { return; } + if (mLaststate.equals("STOPPING") && !state.equals("DISCONNECTED") && !state.equals("EXITING")) { + newLogItem(new LogItem((LogLevel.DEBUG), String.format("Ignoring OpenVPN Status while exiting (%s->%s)", mLastLevel.toString(), level.toString()))); + return; + } + mLaststate = state; mLaststatemsg = msg; mLastStateresid = resid; |