From 8fa896f83802ffae149bfd6b3396945feb912c77 Mon Sep 17 00:00:00 2001 From: andsel Date: Fri, 3 Mar 2023 09:59:52 +0100 Subject: [PATCH] Capped the infinite session expire interval to 100 years (as seconds instead of UINT max value) --- broker/src/main/java/io/moquette/broker/Session.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/broker/src/main/java/io/moquette/broker/Session.java b/broker/src/main/java/io/moquette/broker/Session.java index fda277958..d50e53078 100644 --- a/broker/src/main/java/io/moquette/broker/Session.java +++ b/broker/src/main/java/io/moquette/broker/Session.java @@ -28,7 +28,10 @@ import org.slf4j.LoggerFactory; import java.net.InetSocketAddress; +import java.time.Duration; import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalUnit; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -46,7 +49,9 @@ class Session { private static final Logger LOG = LoggerFactory.getLogger(Session.class); - static final int INFINITE_EXPIRY = 0xFFFFFFFF; + // By specification session expiry value of 0xFFFFFFFF (UINT_MAX) (seconds) means + // session that doesn't expire, it's ~136 years, we can set a cap at 100 year + static final int INFINITE_EXPIRY = (int) Duration.of(100, ChronoUnit.YEARS).toMillis() / 1000; static class InFlightPacket implements Delayed {