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:
@@ -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 _ =>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user