diff --git a/lib/packet_mosq.c b/lib/packet_mosq.c index 84f93cb8..ebe6b6b8 100644 --- a/lib/packet_mosq.c +++ b/lib/packet_mosq.c @@ -215,12 +215,6 @@ int packet__write(struct mosquitto *mosq) if(!mosq) return MOSQ_ERR_INVAL; if(mosq->sock == INVALID_SOCKET) return MOSQ_ERR_NO_CONN; -#ifdef WITH_BROKER - if (mosq->current_out_packet) { - mux__add_out(mosq); - } -#endif - pthread_mutex_lock(&mosq->current_out_packet_mutex); pthread_mutex_lock(&mosq->out_packet_mutex); if(mosq->out_packet && !mosq->current_out_packet){ @@ -232,6 +226,12 @@ int packet__write(struct mosquitto *mosq) } pthread_mutex_unlock(&mosq->out_packet_mutex); +#ifdef WITH_BROKER + if(mosq->current_out_packet){ + mux__add_out(mosq); + } +#endif + state = mosquitto__get_state(mosq); #if defined(WITH_TLS) && !defined(WITH_BROKER) if(state == mosq_cs_connect_pending || mosq->want_connect){