Prevent crash when clean without VPN

This commit is contained in:
Mygod
2018-01-28 00:40:56 -08:00
parent d1fa095d0b
commit e2da99c82c

View File

@@ -140,11 +140,14 @@ class RepeaterService : Service(), WifiP2pManager.ChannelListener, VpnMonitor.Ca
App.ACTION_CLEAN_ROUTINGS -> { App.ACTION_CLEAN_ROUTINGS -> {
val routing = routing val routing = routing
routing!!.started = false routing!!.started = false
if (status == Status.ACTIVE && !initRouting(upstream!!, routing.downstream, routing.hostAddress)) if (status == Status.ACTIVE) {
val upstream = upstream
if (upstream != null && !initRouting(upstream, routing.downstream, routing.hostAddress))
Toast.makeText(this@RepeaterService, R.string.noisy_su_failure, Toast.LENGTH_SHORT).show() Toast.makeText(this@RepeaterService, R.string.noisy_su_failure, Toast.LENGTH_SHORT).show()
} }
} }
} }
}
private val onVpnUnavailable = Runnable { startFailure(getString(R.string.repeater_vpn_unavailable)) } private val onVpnUnavailable = Runnable { startFailure(getString(R.string.repeater_vpn_unavailable)) }
val ssid get() = if (status == Status.ACTIVE) group?.networkName else null val ssid get() = if (status == Status.ACTIVE) group?.networkName else null
@@ -209,12 +212,12 @@ class RepeaterService : Service(), WifiP2pManager.ChannelListener, VpnMonitor.Ca
!matcher.find() -> startFailure(getString(R.string.root_unavailable)) !matcher.find() -> startFailure(getString(R.string.root_unavailable))
matcher.group(2) == "true" -> { matcher.group(2) == "true" -> {
unregisterReceiver() unregisterReceiver()
upstream = ifname
registerReceiver(receiver, intentFilter(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION, registerReceiver(receiver, intentFilter(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION,
WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION)) WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION))
LocalBroadcastManager.getInstance(this) LocalBroadcastManager.getInstance(this)
.registerReceiver(receiver, intentFilter(App.ACTION_CLEAN_ROUTINGS)) .registerReceiver(receiver, intentFilter(App.ACTION_CLEAN_ROUTINGS))
receiverRegistered = true receiverRegistered = true
upstream = ifname
p2pManager.requestGroupInfo(channel, { p2pManager.requestGroupInfo(channel, {
when { when {
it == null -> doStart() it == null -> doStart()
@@ -280,8 +283,8 @@ class RepeaterService : Service(), WifiP2pManager.ChannelListener, VpnMonitor.Ca
val downstream = group.`interface` ?: return val downstream = group.`interface` ?: return
receiverRegistered = true receiverRegistered = true
try { try {
if (initRouting(upstream!!, downstream, owner)) doStart(group) if (initRouting(upstream ?: throw Routing.InterfaceNotFoundException(), downstream, owner))
else startFailure(getText(R.string.noisy_su_failure), group) doStart(group) else startFailure(getText(R.string.noisy_su_failure), group)
} catch (e: Routing.InterfaceNotFoundException) { } catch (e: Routing.InterfaceNotFoundException) {
startFailure(e.message, group) startFailure(e.message, group)
return return