diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index 08fb0cb3..0ff34c1a 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -521,7 +521,6 @@
- 124.219
- 124.244
- 125.6
- - 127.0
- 128.100
- 128.241
- 131.84
diff --git a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala
index 3d473182..6da4ebca 100644
--- a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala
+++ b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala
@@ -236,6 +236,7 @@ class ShadowVpnService extends VpnService {
.setMtu(VPN_MTU)
.addAddress("172.16.0.1", 24)
.addDnsServer("8.8.8.8")
+ .addDnsServer("8.8.4.4")
if (InetAddressUtils.isIPv6Address(appHost)) {
builder.addRoute("0.0.0.0", 0)
@@ -244,8 +245,11 @@ class ShadowVpnService extends VpnService {
val address = appHost.split('.')
val prefix = address(0) + "." + address(1)
gfwList.foreach(addr =>
- if (addr != prefix) builder.addRoute(prefix + ".0.0", 16)
+ if (addr != prefix) {
+ builder.addRoute(addr + ".0.0", 16)
+ }
)
+ builder.addRoute("8.8.0.0", 16)
} else {
val prefix = appHost.split('.')(0).toInt
for (i <- 1 to 254) {
diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala
index e69e2792..8b12331d 100644
--- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala
+++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala
@@ -313,28 +313,6 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton.
}
}.start()
}
-
- 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()
- }
- }
}
override def onCreateOptionsMenu(menu: Menu): Boolean = {
@@ -376,6 +354,11 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton.
super.onOptionsItemSelected(item)
}
+ protected override def onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ setIntent(intent)
+ }
+
protected override def onPause() {
super.onPause()
PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this)
@@ -383,7 +366,32 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton.
protected override def onResume() {
super.onResume()
- val settings: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
+ if (getIntent.getAction != Shadowsocks.REQUEST_CONNECT) {
+ 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()
+ }
+ } else {
+ switchButton.setEnabled(true)
+ switchButton.setChecked(false)
+ Crouton.cancelAllCroutons()
+ if (settings.getBoolean("isRunning", false)) {
+ new Thread {
+ override def run() {
+ crash_recovery()
+ handler.sendEmptyMessage(MSG_CRASH_RECOVER)
+ }
+ }.start()
+ }
+ }
+ }
setPreferenceEnabled()
switchButton.setOnCheckedChangeListener(this)
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
@@ -419,7 +427,10 @@ class Shadowsocks extends UnifiedSherlockPreferenceActivity with CompoundButton.
if (!switchButton.isChecked) switchButton.setChecked(true)
}
else {
- if (switchButton.isChecked) switchButton.setChecked(false)
+ if (switchButton.isChecked) {
+ switchButton.setEnabled(true)
+ switchButton.setChecked(false)
+ }
}
}
if (key == "isConnecting") {