Commit 9236c462 authored by Mygod's avatar Mygod

Catch DeadObjectException

parent 6270308e
...@@ -86,20 +86,21 @@ class ShadowsocksConnection(private val handler: Handler = Handler(), ...@@ -86,20 +86,21 @@ class ShadowsocksConnection(private val handler: Handler = Handler(),
var bandwidthTimeout = 0L var bandwidthTimeout = 0L
set(value) { set(value) {
val service = service val service = service
if (bandwidthTimeout != value && service != null) if (bandwidthTimeout != value && service != null) try {
if (value > 0) service.startListeningForBandwidth(serviceCallback, value) else try { if (value > 0) service.startListeningForBandwidth(serviceCallback, value)
service.stopListeningForBandwidth(serviceCallback) else service.stopListeningForBandwidth(serviceCallback)
} catch (_: DeadObjectException) { } } catch (_: DeadObjectException) { }
field = value field = value
} }
var service: IShadowsocksService? = null var service: IShadowsocksService? = null
override fun onServiceConnected(name: ComponentName?, binder: IBinder) { override fun onServiceConnected(name: ComponentName?, binder: IBinder) {
this.binder = binder this.binder = binder
if (listenForDeath) binder.linkToDeath(this, 0)
val service = IShadowsocksService.Stub.asInterface(binder)!! val service = IShadowsocksService.Stub.asInterface(binder)!!
this.service = service this.service = service
if (!callbackRegistered) try { try {
if (listenForDeath) binder.linkToDeath(this, 0)
check(!callbackRegistered)
service.registerCallback(serviceCallback) service.registerCallback(serviceCallback)
callbackRegistered = true callbackRegistered = true
if (bandwidthTimeout > 0) service.startListeningForBandwidth(serviceCallback, bandwidthTimeout) if (bandwidthTimeout > 0) service.startListeningForBandwidth(serviceCallback, bandwidthTimeout)
...@@ -116,6 +117,7 @@ class ShadowsocksConnection(private val handler: Handler = Handler(), ...@@ -116,6 +117,7 @@ class ShadowsocksConnection(private val handler: Handler = Handler(),
override fun binderDied() { override fun binderDied() {
service = null service = null
callbackRegistered = false
callback?.also { handler.post(it::onBinderDied) } callback?.also { handler.post(it::onBinderDied) }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment