From ed1e1a581eb8d01806616e09192b93123483a255 Mon Sep 17 00:00:00 2001 From: Mygod Date: Thu, 4 Oct 2018 16:03:59 +0800 Subject: [PATCH] Allow records not found in TrafficRecorder --- .../java/be/mygod/vpnhotspot/net/monitor/TrafficRecorder.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TrafficRecorder.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TrafficRecorder.kt index f17affdb..de17ad3a 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TrafficRecorder.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TrafficRecorder.kt @@ -61,7 +61,8 @@ object TrafficRecorder { private fun doUpdate(timestamp: Long) { val oldRecords = LongSparseArray() - for (line in RootSession.use { it.execOutUnjoined("$IPTABLES -nvx -L vpnhotspot_fwd") }.asSequence().drop(2)) { + loop@ for (line in RootSession.use { it.execOutUnjoined("$IPTABLES -nvx -L vpnhotspot_fwd") } + .asSequence().drop(2)) { val columns = line.split("\\s+".toRegex()).filter { it.isNotEmpty() } try { check(columns.size >= 9) @@ -76,7 +77,7 @@ object TrafficRecorder { var upstream: String? = columns[if (isReceive) 5 else 6] if (upstream == "*") upstream = null val key = Triple(ip, upstream, downstream) - val oldRecord = records[key]!! + val oldRecord = records[key] ?: continue@loop // assuming they're legacy old rules val record = if (oldRecord.id == null) oldRecord else TrafficRecord( timestamp = timestamp, mac = oldRecord.mac,