diff --git a/README.md b/README.md index 30b79dd..0d4a92a 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,9 @@ static pointer from_url(std::string url); static pointer create_dummy(); // Function to perform actual network send()/recv() I/O: -// (note: if all you need is to recv()/dispatch() messages, then timeout can be -// used to block until a message arrives. By default, when timeout is 0, poll() -// will not block at all.) +// (note: if all you need is to recv()/dispatch() messages, then a +// negative timeout can be used to block until a message arrives. +// By default, when timeout is 0, poll() will not block at all.) void poll(int timeout = 0); // timeout in milliseconds // Receive a message, and pass it to callable(). Really, this just looks at diff --git a/easywsclient.cpp b/easywsclient.cpp index a70185e..df50b94 100644 --- a/easywsclient.cpp +++ b/easywsclient.cpp @@ -188,7 +188,7 @@ class _RealWebSocket : public easywsclient::WebSocket } return; } - if (timeout > 0) { + if (timeout != 0) { fd_set rfds; fd_set wfds; timeval tv = { timeout/1000, (timeout%1000) * 1000 }; @@ -196,7 +196,7 @@ class _RealWebSocket : public easywsclient::WebSocket FD_ZERO(&wfds); FD_SET(sockfd, &rfds); if (txbuf.size()) { FD_SET(sockfd, &wfds); } - select(sockfd + 1, &rfds, &wfds, NULL, &tv); + select(sockfd + 1, &rfds, &wfds, 0, timeout > 0 ? &tv : 0); } while (true) { // FD_ISSET(0, &rfds) will be true