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; }