Allow records not found in TrafficRecorder

This commit is contained in:
Mygod
2018-10-04 16:03:59 +08:00
parent b9d5a63c23
commit ed1e1a581e

View File

@@ -61,7 +61,8 @@ object TrafficRecorder {
private fun doUpdate(timestamp: Long) { private fun doUpdate(timestamp: Long) {
val oldRecords = LongSparseArray<TrafficRecord>() val oldRecords = LongSparseArray<TrafficRecord>()
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() } val columns = line.split("\\s+".toRegex()).filter { it.isNotEmpty() }
try { try {
check(columns.size >= 9) check(columns.size >= 9)
@@ -76,7 +77,7 @@ object TrafficRecorder {
var upstream: String? = columns[if (isReceive) 5 else 6] var upstream: String? = columns[if (isReceive) 5 else 6]
if (upstream == "*") upstream = null if (upstream == "*") upstream = null
val key = Triple(ip, upstream, downstream) 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( val record = if (oldRecord.id == null) oldRecord else TrafficRecord(
timestamp = timestamp, timestamp = timestamp,
mac = oldRecord.mac, mac = oldRecord.mac,