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) {