[Live-devel] Non Blocking socket returns WSAEWOULDBLOCK
Jeff Shanab
jshanab at smartwire.com
Tue Jan 10 15:08:26 PST 2012
I started having problems connecting to some RTSP streams and traced it to line 400 in the RTSPClient
00399 if (connect(socketNum, (struct sockaddr*) &remoteName, sizeof remoteName) != 0) {
00400 if (envir().getErrno() == EINPROGRESS) {
00401 // The connection is pending; we'll need to handle it later. Wait for our socket to be 'writable', or have an exception.
00402 envir().taskScheduler().setBackgroundHandling(socketNum, SOCKET_WRITABLE|SOCKET_EXCEPTION,
00403 (TaskScheduler::BackgroundHandlerProc*)&connectionHandler, this);
00404 return 0;
00405 }
00406 envir().setResultErrMsg("connect() failed: ");
00407 if (fVerbosityLevel >= 1) envir() << "..." << envir().getResultMsg() << "\n";
00408 return -1;
00409 }
My windows API started returning WSAEWOULDBLOCK which according to MSDN is fine to be rescheduled for later
WSAEWOULDBLOCK = 10035
Resource temporarily unavailable.
This error is returned from operations on nonblocking sockets that cannot be completed immediately, for example recv when no data is queued to be read from the socket. It is a nonfatal error, and the operation should be retried later. It is normal for WSAEWOULDBLOCK to be reported as the result from calling connect on a nonblocking SOCK_STREAM socket, since some time must elapse for the connection to be established.
Should I change the if clause on line 400? Or did I somehow mess up the sockets on my computer.
I have rebooted, there was a windows update this am. I am on Win7 64bit but running a win32 app.
I noticed the setupStreams enables non-blocking sockets by default
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20120110/8e957d02/attachment.html>
More information about the live-devel
mailing list