Prevent crash when clean without VPN
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user