diff --git a/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/LeshanServerBuilder.java b/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/LeshanServerBuilder.java index ba9dd16637..21d80f0f29 100644 --- a/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/LeshanServerBuilder.java +++ b/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/LeshanServerBuilder.java @@ -333,7 +333,11 @@ public LeshanServerBuilder disableQueueModeSupport() { } /** - * Sets a new {@link ClientAwakeTimeProvider} object different from the default one (93 seconds). + * Sets a new {@link ClientAwakeTimeProvider} object different from the default one. + *

+ * By default a {@link StaticClientAwakeTimeProvider} will be used initialized with the + * MAX_TRANSMIT_WAIT value available in CoAP {@link NetworkConfig} which should be by default 93s as + * defined in RFC7252. * * @param awakeTimeProvider the {@link ClientAwakeTimeProvider} to set. */ @@ -378,8 +382,16 @@ public LeshanServer build() { decoder = new DefaultLwM2mNodeDecoder(); if (coapConfig == null) coapConfig = createDefaultNetworkConfig(); - if (awakeTimeProvider == null) - awakeTimeProvider = new StaticClientAwakeTimeProvider(); + if (awakeTimeProvider == null) { + int maxTransmitWait = coapConfig.getInt(Keys.MAX_TRANSMIT_WAIT); + if (maxTransmitWait == 0) { + LOG.warn( + "No value available for MAX_TRANSMIT_WAIT in CoAP NetworkConfig. Fallback with a default 93s value."); + awakeTimeProvider = new StaticClientAwakeTimeProvider(); + } else { + awakeTimeProvider = new StaticClientAwakeTimeProvider(maxTransmitWait); + } + } if (registrationIdProvider == null) registrationIdProvider = new RandomStringRegistrationIdProvider(); if (endpointFactory == null) {