From d9142c3974be0ef6d4bc3a0aef762f8a7d8e1f32 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sat, 5 Mar 2016 22:31:52 +0000 Subject: [PATCH] [476314] Deliver queued WS client msgs on reconnect. Thanks to Joking Young and Christoph Krey. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=476314 --- ChangeLog.txt | 5 +++++ src/websockets.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index d46ad7a3..1e84a1c1 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,6 +1,11 @@ 1.4.9 - 20160xxx ================ +Broker: +- Ensure websockets clients that previously connected with clean session set + to false have their queued messages delivered immediately on reconnecting. + Closes #476314. + Client library: - Fix the case where a message received just before the keepalive timer expired would cause the client to miss the keepalive timer. diff --git a/src/websockets.c b/src/websockets.c index d79fabf7..87d33f5f 100644 --- a/src/websockets.c +++ b/src/websockets.c @@ -218,6 +218,8 @@ static int callback_mqtt(struct libwebsocket_context *context, return -1; } + mqtt3_db_message_write(db, mosq); + if(mosq->out_packet && !mosq->current_out_packet){ mosq->current_out_packet = mosq->out_packet; mosq->out_packet = mosq->out_packet->next;