Ignore extra records coming later
This can happen when the application is terminated incorrectly. Due to how we add routing rules, new client-wise rules are always added to the top. Therefore, we should always assume that the input at the top is the correct one.
This commit is contained in:
@@ -88,14 +88,22 @@ object TrafficRecorder {
|
||||
ip = ip,
|
||||
upstream = upstream,
|
||||
downstream = downstream,
|
||||
sentPackets = -1,
|
||||
sentBytes = -1,
|
||||
receivedPackets = -1,
|
||||
receivedBytes = -1,
|
||||
previousId = oldRecord.id)
|
||||
if (isReceive) {
|
||||
if (record.receivedPackets == -1L && record.receivedBytes == -1L) {
|
||||
record.receivedPackets = columns[0].toLong()
|
||||
record.receivedBytes = columns[1].toLong()
|
||||
}
|
||||
} else {
|
||||
if (record.sentPackets == -1L && record.sentBytes == -1L) {
|
||||
record.sentPackets = columns[0].toLong()
|
||||
record.sentBytes = columns[1].toLong()
|
||||
}
|
||||
}
|
||||
if (oldRecord.id != null) {
|
||||
check(records.put(key, record) == oldRecord)
|
||||
oldRecords.put(oldRecord.id!!, oldRecord)
|
||||
@@ -109,7 +117,13 @@ object TrafficRecorder {
|
||||
Crashlytics.logException(e)
|
||||
}
|
||||
}
|
||||
for ((_, record) in records) if (record.id == null) AppDatabase.instance.trafficRecordDao.insert(record)
|
||||
for ((_, record) in records) if (record.id == null) {
|
||||
check(record.sentPackets >= 0)
|
||||
check(record.sentBytes >= 0)
|
||||
check(record.receivedPackets >= 0)
|
||||
check(record.receivedBytes >= 0)
|
||||
AppDatabase.instance.trafficRecordDao.insert(record)
|
||||
}
|
||||
foregroundListeners(records.values, oldRecords)
|
||||
scheduleUpdateLocked()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user