From 9296f7c60990c581ffc5964683adff68b3064394 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 6 May 2013 12:31:09 +0800 Subject: [PATCH] fix some issues --- .travis.yml | 2 +- .../github/shadowsocks/ShadowVpnService.scala | 13 +++--- .../com/github/shadowsocks/Shadowsocks.scala | 45 +++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index 51856574..9b61554a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,5 +17,5 @@ script: - wget https://raw.github.com/paulp/sbt-extras/master/sbt - chmod u+x ./sbt - cp local.sbt.example local.sbt - - ./sbt android:package-release + - ./sbt android:package-debug - ./sbt deploy diff --git a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala index 5c1e13af..8316d513 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala @@ -71,8 +71,6 @@ object ShadowVpnService { var sRunningInstance: WeakReference[ShadowVpnService] = null - var sConn: ParcelFileDescriptor = null - } class ShadowVpnService extends VpnService { @@ -87,6 +85,7 @@ class ShadowVpnService extends VpnService { val MSG_HOST_CHANGE: Int = 4 val MSG_STOP_SELF: Int = 5 val VPN_MTU = 1500 + var conn: ParcelFileDescriptor = null def getPid(name: String): Int = { try { @@ -243,13 +242,13 @@ class ShadowVpnService extends VpnService { && i != 172 && i != 192 && i != 10) builder.addRoute(i + ".0.0.0", 8) } - ShadowVpnService.sConn = builder.establish() - if (ShadowVpnService.sConn == null) { + conn = builder.establish() + if (conn == null) { stopSelf() return } - val fd = ShadowVpnService.sConn.getFd + val fd = conn.getFd val cmd = (BASE + "tun2socks --netif-ipaddr 172.16.0.2 --udpgw-remote-server-addr 158.255.208.201:7300 " + "--netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:%d --tunfd %d --tunmtu %d --pid " + BASE + "tun2socks.pid") @@ -315,6 +314,10 @@ class ShadowVpnService extends VpnService { ed.putBoolean("isRunning", false) ed.putBoolean("isConnecting", false) ed.commit + if (conn != null) { + conn.close() + conn = null + } super.onDestroy() markServiceStopped() } diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index c72b2205..967b3fc4 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -362,28 +362,29 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton. protected override def onResume() { super.onResume() val settings: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) - if (isServiceStarted) { - switchButton.setChecked(true) - if (ShadowVpnService.isServiceStarted) { - val style = new Style.Builder() - .setBackgroundColorValue(Style.holoBlueLight) - .setDuration(Style.DURATION_INFINITE) - .build() - switchButton.setEnabled(false) - Crouton.makeText(Shadowsocks.this, R.string.vpn_status, style).show() + if (getIntent.getAction != Shadowsocks.REQUEST_CONNECT) { + if (isServiceStarted) { + switchButton.setChecked(true) + if (ShadowVpnService.isServiceStarted) { + val style = new Style.Builder() + .setBackgroundColorValue(Style.holoBlueLight) + .setDuration(Style.DURATION_INFINITE) + .build() + switchButton.setEnabled(false) + Crouton.makeText(Shadowsocks.this, R.string.vpn_status, style).show() + } + } else { + switchButton.setChecked(false) + if (settings.getBoolean("isRunning", false)) { + new Thread { + override def run() { + crash_recovery() + handler.sendEmptyMessage(MSG_CRASH_RECOVER) + } + }.start() + } } } - else { - if (settings.getBoolean("isRunning", false)) { - new Thread { - override def run() { - crash_recovery() - handler.sendEmptyMessage(MSG_CRASH_RECOVER) - } - }.start() - } - switchButton.setChecked(false) - } setPreferenceEnabled() switchButton.setOnCheckedChangeListener(this) PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this) @@ -517,10 +518,6 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton. def serviceStop() { if (ShadowVpnService.isServiceStarted) { - if (ShadowVpnService.sConn != null) { - ShadowVpnService.sConn.close() - ShadowVpnService.sConn = null - } stopService(new Intent(this, classOf[ShadowVpnService])) } if (ShadowsocksService.isServiceStarted) {