Crash recovery for NAT mode

Bugfix: when NAT process is killed, Internet access is gone. Reproduce with:

    adb shell killall com.github.shadowsocks:nat

One circumstance it cannot recover from is when updating to a new version, where both processes are killed at the same time. But a reset will be executed when the new version is launched.
This commit is contained in:
Mygod
2016-03-11 20:39:01 +08:00
parent da1b404175
commit 8657ef87f4
2 changed files with 5 additions and 8 deletions
@@ -275,7 +275,7 @@ class Shadowsocks
}
}
private def crashRecovery() {
def crashRecovery() {
val cmd = new ArrayBuffer[String]()
for (task <- Array("ss-local", "ss-tunnel", "pdnsd", "redsocks", "tun2socks")) {
@@ -477,7 +477,9 @@ class Shadowsocks
handler.removeCallbacksAndMessages(null)
}
def install() {
def reset() {
crashRecovery()
copyAssets(System.getABI)
val ab = new ArrayBuffer[String]
@@ -487,12 +489,6 @@ class Shadowsocks
Console.runCommand(ab.toArray)
}
def reset() {
crashRecovery()
install()
}
def recovery() {
serviceStop()
val h = showProgress(R.string.recovering)
@@ -16,6 +16,7 @@ class ShadowsocksDeathRecipient(val mContext: ServiceBoundContext)
mContext match {
case ss: Shadowsocks =>
ss.deattachService
ss.crashRecovery
ss.attachService
case _ =>
}