From 68b6f8915630c8d68d3371092dced487447aea6b Mon Sep 17 00:00:00 2001
From: Arne Schwabe <arne@rfc2549.org>
Date: Wed, 1 Jan 2014 17:48:13 +0100
Subject: Ignore certain status changes

---
 src/de/blinkt/openvpn/core/OpenVpnManagementThread.java |  1 +
 src/de/blinkt/openvpn/core/VpnStatus.java               | 17 ++++++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

(limited to 'src/de')

diff --git a/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index caec4bd7..cfc6776d 100644
--- a/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -339,6 +339,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
 	private void processState(String argument) {
 		String[] args = argument.split(",",3);
 		String currentstate = args[1];
+
 		if(args[2].equals(",,"))
 			VpnStatus.updateStateString(currentstate, "");
 		else
diff --git a/src/de/blinkt/openvpn/core/VpnStatus.java b/src/de/blinkt/openvpn/core/VpnStatus.java
index 20b56172..1a3a7a26 100644
--- a/src/de/blinkt/openvpn/core/VpnStatus.java
+++ b/src/de/blinkt/openvpn/core/VpnStatus.java
@@ -444,15 +444,26 @@ public class VpnStatus {
 	}
 
 	public synchronized static void updateStateString(String state, String msg, int resid, ConnectionStatus level) {
-		mLaststate= state;
+        // Workound for OpenVPN doing AUTH and wait and being connected
+        // Simply ignore these state
+        if (mLastLevel == ConnectionStatus.LEVEL_CONNECTED &&
+                (state.equals("WAIT") || state.equals("AUTH")))
+        {
+            newLogItem(new LogItem((LogLevel.DEBUG), String.format("Ignoring OpenVPN Status in CONNECTED state (%s->%s): %s",state,level.toString(),msg)));
+            return;
+        }
+
+        mLaststate= state;
 		mLaststatemsg = msg;
 		mLastStateresid = resid;
 		mLastLevel = level;
 
-		for (StateListener sl : stateListener) {
+
+
+        for (StateListener sl : stateListener) {
 			sl.updateState(state,msg,resid,level);
 		}
-        newLogItem(new LogItem((LogLevel.DEBUG), String.format("New OpenVPN Status (%s->%s): %s",state,level.toString(),msg)));
+        //newLogItem(new LogItem((LogLevel.DEBUG), String.format("New OpenVPN Status (%s->%s): %s",state,level.toString(),msg)));
 	}
 
 	public static void logInfo(String message) {
-- 
cgit v1.2.3