aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/session
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2024-02-08 17:49:28 -0800
committerAnton Tananaev <anton@traccar.org>2024-02-08 17:49:28 -0800
commit0c8b5c1ab1f83cc0fc6d2f17cdf808388b383e14 (patch)
tree86d2b534a6e642cc461dad64685f35203b1c5850 /src/main/java/org/traccar/session
parentfe771851995da97ffa2fb50e21bd437bca208eac (diff)
downloadtrackermap-server-0c8b5c1ab1f83cc0fc6d2f17cdf808388b383e14.tar.gz
trackermap-server-0c8b5c1ab1f83cc0fc6d2f17cdf808388b383e14.tar.bz2
trackermap-server-0c8b5c1ab1f83cc0fc6d2f17cdf808388b383e14.zip
Handle no remote address
Diffstat (limited to 'src/main/java/org/traccar/session')
-rw-r--r--src/main/java/org/traccar/session/ConnectionManager.java18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/main/java/org/traccar/session/ConnectionManager.java b/src/main/java/org/traccar/session/ConnectionManager.java
index 1461c66ea..121b876c5 100644
--- a/src/main/java/org/traccar/session/ConnectionManager.java
+++ b/src/main/java/org/traccar/session/ConnectionManager.java
@@ -188,17 +188,19 @@ public class ConnectionManager implements BroadcastInterface {
public void deviceDisconnected(Channel channel, boolean supportsOffline) {
SocketAddress remoteAddress = channel.remoteAddress();
- Map<String, DeviceSession> endpointSessions = sessionsByEndpoint.remove(remoteAddress);
- if (endpointSessions != null) {
- for (DeviceSession deviceSession : endpointSessions.values()) {
- if (supportsOffline) {
- updateDevice(deviceSession.getDeviceId(), Device.STATUS_OFFLINE, null);
+ if (remoteAddress != null) {
+ Map<String, DeviceSession> endpointSessions = sessionsByEndpoint.remove(remoteAddress);
+ if (endpointSessions != null) {
+ for (DeviceSession deviceSession : endpointSessions.values()) {
+ if (supportsOffline) {
+ updateDevice(deviceSession.getDeviceId(), Device.STATUS_OFFLINE, null);
+ }
+ sessionsByDeviceId.remove(deviceSession.getDeviceId());
+ cacheManager.removeDevice(deviceSession.getDeviceId());
}
- sessionsByDeviceId.remove(deviceSession.getDeviceId());
- cacheManager.removeDevice(deviceSession.getDeviceId());
}
+ unknownByEndpoint.remove(remoteAddress);
}
- unknownByEndpoint.remove(remoteAddress);
}
public void deviceUnknown(long deviceId) {