From 017dd425a06ce22ab59bb11028411e51d54bce03 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 13 Mar 2016 13:13:37 +0800 Subject: [PATCH] Refine #602 --- .../scala/com/github/shadowsocks/BaseService.scala | 10 +++++----- .../github/shadowsocks/ShadowsocksNatService.scala | 8 ++++---- .../github/shadowsocks/ShadowsocksVpnService.scala | 12 ++++++------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/BaseService.scala b/src/main/scala/com/github/shadowsocks/BaseService.scala index 0832b430..2c4653c2 100644 --- a/src/main/scala/com/github/shadowsocks/BaseService.scala +++ b/src/main/scala/com/github/shadowsocks/BaseService.scala @@ -63,7 +63,7 @@ trait BaseService extends Service { private val closeReceiver: BroadcastReceiver = (context: Context, intent: Intent) => { Toast.makeText(context, R.string.stopping, Toast.LENGTH_SHORT).show() - stopRunner() + stopRunner(true) } var closeReceiverRegistered: Boolean = _ @@ -106,8 +106,8 @@ trait BaseService extends Service { override def use(config: Config) = synchronized(state match { case State.STOPPED => if (config != null) startRunner(config) case State.CONNECTED => - if (config == null) stopRunner() else if (config.profileId != BaseService.this.config.profileId) { - stopRunner() + if (config == null) stopRunner(true) else if (config.profileId != BaseService.this.config.profileId) { + stopRunner(false) startRunner(config) } case _ => Log.w(BaseService.this.getClass.getSimpleName, "Illegal state when invoking use: " + state) @@ -132,7 +132,7 @@ trait BaseService extends Service { } } - def stopRunner() { + def stopRunner(stopService: Boolean) { // clean up recevier if (closeReceiverRegistered) { unregisterReceiver(closeReceiver) @@ -152,7 +152,7 @@ trait BaseService extends Service { changeState(State.STOPPED) // stop the service if nothing has bound to it - stopSelf() + if (stopService) stopSelf() } def updateTrafficTotal(tx: Long, rx: Long) { diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 15df87ac..9a179e32 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -396,7 +396,7 @@ class ShadowsocksNatService extends BaseService { } catch { case ex: Exception => changeState(State.STOPPED, getString(R.string.service_failed)) - stopRunner() + stopRunner(false) this.config = null } } @@ -427,13 +427,13 @@ class ShadowsocksNatService extends BaseService { notification = new ShadowsocksNotification(this, config.profileName, true) } else { changeState(State.STOPPED, getString(R.string.service_failed)) - stopRunner() + stopRunner(false) } } } } - override def stopRunner() { + override def stopRunner(stopService: Boolean) { // channge the state changeState(State.STOPPING) @@ -445,7 +445,7 @@ class ShadowsocksNatService extends BaseService { // reset NAT killProcesses() - super.stopRunner() + super.stopRunner(stopService) } override def getTag = TAG diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 89d15cdc..86367e0d 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -106,10 +106,10 @@ class ShadowsocksVpnService extends VpnService with BaseService { } override def onRevoke() { - stopRunner() + stopRunner(false) } - override def stopRunner() { + override def stopRunner(stopService: Boolean) { if (vpnThread != null) { vpnThread.stopThread() @@ -132,7 +132,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { conn = null } - super.stopRunner() + super.stopRunner(stopService) } def getVersionName: String = { @@ -193,7 +193,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { } catch { case ex: Exception => changeState(State.STOPPED, getString(R.string.service_failed)) - stopRunner() + stopRunner(false) this.config = null } } @@ -221,7 +221,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { notification = new ShadowsocksNotification(this, config.profileName) } else { changeState(State.STOPPED, getString(R.string.service_failed)) - stopRunner() + stopRunner(false) } } } @@ -386,7 +386,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { } if (conn == null) { - stopRunner() + stopRunner(false) return -1 }