|
|
@ -63,20 +63,22 @@ int mosquitto_loop(struct mosquitto *mosq, int timeout, int max_packets)
|
|
|
|
if(mosq->sock != INVALID_SOCKET){
|
|
|
|
if(mosq->sock != INVALID_SOCKET){
|
|
|
|
maxfd = mosq->sock;
|
|
|
|
maxfd = mosq->sock;
|
|
|
|
FD_SET(mosq->sock, &readfds);
|
|
|
|
FD_SET(mosq->sock, &readfds);
|
|
|
|
pthread_mutex_lock(&mosq->current_out_packet_mutex);
|
|
|
|
if(mosq->want_write){
|
|
|
|
pthread_mutex_lock(&mosq->out_packet_mutex);
|
|
|
|
|
|
|
|
if(mosq->out_packet || mosq->current_out_packet){
|
|
|
|
|
|
|
|
FD_SET(mosq->sock, &writefds);
|
|
|
|
FD_SET(mosq->sock, &writefds);
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
#ifdef WITH_TLS
|
|
|
|
#ifdef WITH_TLS
|
|
|
|
if(mosq->ssl){
|
|
|
|
if(mosq->ssl == NULL || SSL_is_init_finished(mosq->ssl))
|
|
|
|
if(mosq->want_write){
|
|
|
|
#endif
|
|
|
|
FD_SET(mosq->sock, &writefds);
|
|
|
|
{
|
|
|
|
|
|
|
|
pthread_mutex_lock(&mosq->current_out_packet_mutex);
|
|
|
|
|
|
|
|
pthread_mutex_lock(&mosq->out_packet_mutex);
|
|
|
|
|
|
|
|
if(mosq->out_packet || mosq->current_out_packet){
|
|
|
|
|
|
|
|
FD_SET(mosq->sock, &writefds);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mosq->out_packet_mutex);
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mosq->current_out_packet_mutex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mosq->out_packet_mutex);
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mosq->current_out_packet_mutex);
|
|
|
|
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
#ifdef WITH_SRV
|
|
|
|
#ifdef WITH_SRV
|
|
|
|
if(mosq->achan){
|
|
|
|
if(mosq->achan){
|
|
|
|