fix data race mosquitto_loop function
next_msg_out must be protected with the msgtime_mutex as done everywhere else in the code else there is a data race e.g. if mosquitto_publish is called from another thread Signed-off-by: Christian Salvasohn <csalvasohn@gmx.de>
This commit is contained in:
parent
3cdeb595ff
commit
4077987593
@ -114,9 +114,11 @@ int mosquitto_loop(struct mosquitto *mosq, int timeout, int max_packets)
|
||||
}
|
||||
|
||||
now = mosquitto_time();
|
||||
pthread_mutex_lock(&mosq->msgtime_mutex);
|
||||
if(mosq->next_msg_out && now + timeout_ms/1000 > mosq->next_msg_out){
|
||||
timeout_ms = (mosq->next_msg_out - now)*1000;
|
||||
}
|
||||
pthread_mutex_unlock(&mosq->msgtime_mutex);
|
||||
|
||||
if(timeout_ms < 0){
|
||||
/* There has been a delay somewhere which means we should have already
|
||||
|
Loading…
Reference in New Issue
Block a user