From bb81fe13394c6f71f46642361edcafd36da491c9 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 5 Oct 2015 20:47:48 +0800 Subject: [PATCH] fix close receiver --- .../shadowsocks/ShadowsocksVpnService.scala | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index ad17afc8..ed3c1990 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -68,10 +68,10 @@ class ShadowsocksVpnService extends VpnService with BaseService { val PRIVATE_VLAN = "26.26.26.%s" val PRIVATE_VLAN6 = "fdfe:dcba:9876::%s" var conn: ParcelFileDescriptor = null - var receiver: BroadcastReceiver = null var apps: Array[ProxiedApp] = null var config: Config = null var vpnThread: ShadowsocksVpnThread = null + var closeReceiver: BroadcastReceiver = null def isByass(net: SubnetUtils): Boolean = { val info = net.getInfo @@ -171,10 +171,10 @@ class ShadowsocksVpnService extends VpnService with BaseService { stopSelf() } - // clean up the context - if (receiver != null) { - unregisterReceiver(receiver) - receiver = null + // clean up recevier + if (closeReceiver != null) { + unregisterReceiver(closeReceiver) + closeReceiver = null } // channge the state @@ -211,6 +211,16 @@ class ShadowsocksVpnService extends VpnService with BaseService { config = c + // register close receiver + val filter = new IntentFilter() + filter.addAction(Intent.ACTION_SHUTDOWN) + filter.addAction(Action.CLOSE) + closeReceiver = (context: Context, intent: Intent) => { + Toast.makeText(context, R.string.stopping, Toast.LENGTH_SHORT).show() + stopRunner() + } + registerReceiver(closeReceiver, filter) + // ensure the VPNService is prepared if (VpnService.prepare(this) != null) { val i = new Intent(this, classOf[ShadowsocksRunnerActivity]) @@ -226,15 +236,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { .setLabel(getVersionName) .build()) - // register close receiver - val filter = new IntentFilter() - filter.addAction(Intent.ACTION_SHUTDOWN) - receiver = (p1: Context, p2: Intent) => { - Toast.makeText(p1, R.string.stopping, Toast.LENGTH_SHORT) - stopRunner() - } - registerReceiver(receiver, filter) - changeState(State.CONNECTING) Future {