diff --git a/ChangeLog.txt b/ChangeLog.txt index 5f443fa5..10c88350 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,6 +1,10 @@ Broker: - Fix `auth_method` not being provided to the extended auth plugin event. Closes #1975. +- Fix large packets not being completely published to slow clients. + Closes #1977. +- Fix bridge connection not relinquishing POLLOUT after messages are sent. + Closes #1979. 2.0.4 - 2020-12-22 diff --git a/apps/db_dump/stubs.c b/apps/db_dump/stubs.c index 3515674e..41dae0ee 100644 --- a/apps/db_dump/stubs.c +++ b/apps/db_dump/stubs.c @@ -38,6 +38,11 @@ enum mosquitto_client_state mosquitto__get_state(struct mosquitto *mosq) return mosq_cs_new; } +int mux__remove_out(struct mosquitto *mosq) +{ + return 0; +} + ssize_t net__read(struct mosquitto *mosq, void *buf, size_t count) { return 0; diff --git a/lib/packet_mosq.c b/lib/packet_mosq.c index 5cf78fa9..d2127d30 100644 --- a/lib/packet_mosq.c +++ b/lib/packet_mosq.c @@ -164,6 +164,7 @@ int packet__queue(struct mosquitto *mosq, struct mosquitto__packet *packet) lws_callback_on_writable(mosq->wsi); return MOSQ_ERR_SUCCESS; }else{ + mux__add_out(mosq); return packet__write(mosq); } # else @@ -314,6 +315,9 @@ int packet__write(struct mosquitto *mosq) #ifdef WITH_BROKER mosq->next_msg_out = db.now_s + mosq->keepalive; + if(mosq->current_out_packet == NULL){ + mux__remove_out(mosq); + } #else pthread_mutex_lock(&mosq->msgtime_mutex); mosq->next_msg_out = mosquitto_time() + mosq->keepalive;