diff --git a/src/event.c b/src/event.c index 1d6fd4c..9efd1c1 100644 --- a/src/event.c +++ b/src/event.c @@ -37,11 +37,14 @@ #ifndef _WIN32 #include #include +#include +#define _sleep(x) usleep(x*1000) #else #include #define ETIMEDOUT WSAETIMEDOUT #define ECONNRESET WSAECONNRESET #define ECONNABORTED WSAECONNABORTED +#define _sleep(x) Sleep(x) #endif #include @@ -225,7 +228,13 @@ void xmpp_run_once(xmpp_ctx_t *ctx, const unsigned long timeout) } /* check for events */ - ret = select(max + 1, &rfds, &wfds, NULL, &tv); + if (max > 0) + ret = select(max + 1, &rfds, &wfds, NULL, &tv); + else { + if (timeout > 0) + _sleep(timeout); + return; + } /* select errored */ if (ret < 0) {