diff --git a/lib/mosquitto.c b/lib/mosquitto.c index f526d538..9797113e 100644 --- a/lib/mosquitto.c +++ b/lib/mosquitto.c @@ -23,6 +23,7 @@ Contributors: #include #include #include +#include #else #include #include @@ -983,6 +984,9 @@ int mosquitto_loop_forever(struct mosquitto *mosq, int timeout, int max_packets) int rc; unsigned int reconnects = 0; unsigned long reconnect_delay; +#ifndef WIN32 + struct timespec req, rem; +#endif if(!mosq) return MOSQ_ERR_INVAL; @@ -1042,7 +1046,10 @@ int mosquitto_loop_forever(struct mosquitto *mosq, int timeout, int max_packets) #ifdef WIN32 Sleep(reconnect_delay*1000); #else - sleep(reconnect_delay); + req.tv_sec = reconnect_delay; + req.tv_nsec = 0; + while(nanosleep(&req, &rem) == -1 && errno == EINTR) + req = rem; #endif pthread_mutex_lock(&mosq->state_mutex);