From 28f09fe4fbc3b3debfb60d669d8793fe1a3ea8d8 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sun, 24 Nov 2024 13:02:49 +0000 Subject: [PATCH] mqtt: fix issue about mux_substream of child wsi --- lib/roles/mqtt/ops-mqtt.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/roles/mqtt/ops-mqtt.c b/lib/roles/mqtt/ops-mqtt.c index eaacf56f6..4077b7258 100644 --- a/lib/roles/mqtt/ops-mqtt.c +++ b/lib/roles/mqtt/ops-mqtt.c @@ -440,11 +440,6 @@ rops_issue_keepalive_mqtt(struct lws *wsi, int isvalid) } nwsi->mqtt->send_pingreq = 1; - - if (lws_check_opt(wsi->a.context->options, LWS_SERVER_OPTION_LIBUV)) { - nwsi->mux_substream = 0; - } - lws_callback_on_writable(nwsi); return 0; @@ -557,6 +552,16 @@ rops_callback_on_writable_mqtt(struct lws *wsi) ) return 1; + if (lws_check_opt(wsi->a.context->options, LWS_SERVER_OPTION_LIBUV)) { + if (network_wsi->mux_substream != 0) + network_wsi->mux_substream = 0; + + lws_start_foreach_ll(struct lws *, w, network_wsi->mux.child_list) { + if (w->mux.requested_POLLOUT == 0) + w->mux.requested_POLLOUT = 1; + } lws_end_foreach_ll(w, mux.sibling_list); + } + return 0; }