diff options
author | Anton Tananaev <anton@traccar.org> | 2022-06-18 16:48:15 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2022-06-18 16:48:15 -0700 |
commit | 45940f73c57b871711ee9fb41ebeba3c0ca9e9b6 (patch) | |
tree | ad93db24ab3500f38eb5d5113fc76ce1e735e1f4 /src/main/java/org/traccar/session/ConnectionManager.java | |
parent | 440c6069b81bde2a241b5c0829cf951246a386f2 (diff) | |
download | trackermap-server-45940f73c57b871711ee9fb41ebeba3c0ca9e9b6.tar.gz trackermap-server-45940f73c57b871711ee9fb41ebeba3c0ca9e9b6.tar.bz2 trackermap-server-45940f73c57b871711ee9fb41ebeba3c0ca9e9b6.zip |
Fix offline device notifications
Diffstat (limited to 'src/main/java/org/traccar/session/ConnectionManager.java')
-rw-r--r-- | src/main/java/org/traccar/session/ConnectionManager.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/session/ConnectionManager.java b/src/main/java/org/traccar/session/ConnectionManager.java index 05c4893fd..fe6521d18 100644 --- a/src/main/java/org/traccar/session/ConnectionManager.java +++ b/src/main/java/org/traccar/session/ConnectionManager.java @@ -144,7 +144,10 @@ public class ConnectionManager { endpointSessions.put(device.getUniqueId(), deviceSession); sessionsByEndpoint.put(endpoint, endpointSessions); sessionsByDeviceId.put(device.getId(), deviceSession); - cacheManager.addDevice(device.getId()); + + if (oldSession == null) { + cacheManager.addDevice(device.getId()); + } return deviceSession; } else { @@ -190,8 +193,8 @@ public class ConnectionManager { public void deviceUnknown(long deviceId) { updateDevice(deviceId, Device.STATUS_UNKNOWN, null); DeviceSession deviceSession = sessionsByDeviceId.remove(deviceId); - cacheManager.removeDevice(deviceId); if (deviceSession != null) { + cacheManager.removeDevice(deviceId); Endpoint endpoint = new Endpoint(deviceSession.getChannel(), deviceSession.getRemoteAddress()); sessionsByEndpoint.computeIfPresent(endpoint, (e, sessions) -> { sessions.remove(deviceSession.getUniqueId()); |