diff options
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java | 16 | ||||
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/StatusListener.java | 4 |
2 files changed, 15 insertions, 5 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java index 3d3dd6b1..29f4ddaa 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java @@ -66,6 +66,9 @@ public class OpenVPNStatusService extends Service implements VpnStatus.LogListen @Override public ParcelFileDescriptor registerStatusCallback(IStatusCallbacks cb) throws RemoteException { final LogItem[] logbuffer = VpnStatus.getlogbuffer(); + if (mLastUpdateMessage != null) + sendUpdate(cb, mLastUpdateMessage); + mCallbacks.register(cb); try { final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); @@ -137,13 +140,15 @@ public class OpenVPNStatusService extends Service implements VpnStatus.LogListen msg.sendToTarget(); } - class UpdateMessage { + static UpdateMessage mLastUpdateMessage; + + static class UpdateMessage { public String state; public String logmessage; public ConnectionStatus level; - public int resId; + int resId; - public UpdateMessage(String state, String logmessage, int resId, ConnectionStatus level) { + UpdateMessage(String state, String logmessage, int resId, ConnectionStatus level) { this.state = state; this.resId = resId; this.logmessage = logmessage; @@ -155,7 +160,8 @@ public class OpenVPNStatusService extends Service implements VpnStatus.LogListen @Override public void updateState(String state, String logmessage, int localizedResId, ConnectionStatus level) { - Message msg = mHandler.obtainMessage(SEND_NEW_STATE, new UpdateMessage(state, logmessage, localizedResId, level)); + mLastUpdateMessage = new UpdateMessage(state, logmessage, localizedResId, level); + Message msg = mHandler.obtainMessage(SEND_NEW_STATE, mLastUpdateMessage); msg.sendToTarget(); } @@ -198,7 +204,7 @@ public class OpenVPNStatusService extends Service implements VpnStatus.LogListen broadcastItem.newLogItem((LogItem) msg.obj); break; case SEND_NEW_BYTECOUNT: - Pair<Long, Long> inout = (Pair<Long, Long>) msg.obj; + Pair<Long, Long> inout = (Pair<Long, Long>) msg.obj; broadcastItem.updateByteCount(inout.first, inout.second); break; case SEND_NEW_STATE: diff --git a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java index e79bdadd..16d580b7 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java +++ b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java @@ -34,6 +34,7 @@ public class StatusListener { try { /* Check if this a local service ... */ if (service.queryLocalInterface("de.blinkt.openvpn.core.IServiceStatus") == null) { + // Not a local service VpnStatus.setConnectedVPNProfile(serviceStatus.getLastConnectedVPN()); ParcelFileDescriptor pfd = serviceStatus.registerStatusCallback(mCallback); DataInputStream fd = new DataInputStream(new ParcelFileDescriptor.AutoCloseInputStream(pfd)); @@ -47,6 +48,9 @@ public class StatusListener { len = fd.readShort(); } fd.close(); + + + } else { VpnStatus.initLogCache(mCacheDir); } |