mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-09-24 09:14:02 +08:00
Fix non-reachable bridge blocking the broker on Windows.
Closes #2172. Thanks to Niclas Lindgren.
This commit is contained in:
@@ -8,6 +8,7 @@ Broker:
|
||||
- Fix bridge not reconnectng if the first reconnection attempt fails.
|
||||
Closes #2207.
|
||||
- Improve QoS 0 outgoing packet queueing.
|
||||
- Fix non-reachable bridge blocking the broker on Windows. Closes #2172.
|
||||
|
||||
Clients:
|
||||
- If sending mosquitto_sub output to a pipe, mosquitto_sub will now detect
|
||||
|
||||
+5
-7
@@ -236,11 +236,7 @@ int packet__write(struct mosquitto *mosq)
|
||||
#endif
|
||||
|
||||
state = mosquitto__get_state(mosq);
|
||||
#if defined(WITH_TLS) && !defined(WITH_BROKER)
|
||||
if(state == mosq_cs_connect_pending || mosq->want_connect){
|
||||
#else
|
||||
if(state == mosq_cs_connect_pending){
|
||||
#endif
|
||||
pthread_mutex_unlock(&mosq->current_out_packet_mutex);
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
@@ -324,15 +320,17 @@ 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;
|
||||
pthread_mutex_unlock(&mosq->msgtime_mutex);
|
||||
#endif
|
||||
}
|
||||
#ifdef WITH_BROKER
|
||||
if (mosq->current_out_packet == NULL) {
|
||||
mux__remove_out(mosq);
|
||||
}
|
||||
#endif
|
||||
pthread_mutex_unlock(&mosq->current_out_packet_mutex);
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -285,6 +285,7 @@ int bridge__connect_step2(struct mosquitto *context)
|
||||
|
||||
if(rc == MOSQ_ERR_CONN_PENDING){
|
||||
mosquitto__set_state(context, mosq_cs_connect_pending);
|
||||
mux__add_out(context);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
@@ -447,6 +448,7 @@ int bridge__connect(struct mosquitto *context)
|
||||
return rc;
|
||||
}else if(rc == MOSQ_ERR_CONN_PENDING){
|
||||
mosquitto__set_state(context, mosq_cs_connect_pending);
|
||||
mux__add_out(context);
|
||||
}
|
||||
|
||||
HASH_ADD(hh_sock, db.contexts_by_sock, sock, sizeof(context->sock), context);
|
||||
|
||||
Reference in New Issue
Block a user