aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/session/ConnectionManager.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-18 16:48:15 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-18 16:48:15 -0700
commit45940f73c57b871711ee9fb41ebeba3c0ca9e9b6 (patch)
treead93db24ab3500f38eb5d5113fc76ce1e735e1f4 /src/main/java/org/traccar/session/ConnectionManager.java
parent440c6069b81bde2a241b5c0829cf951246a386f2 (diff)
downloadtrackermap-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.java7
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());