diff options
| author | Christian Beier <dontmind@freeshell.org> | 2011-03-03 16:11:38 +0100 |
|---|---|---|
| committer | Christian Beier <dontmind@freeshell.org> | 2011-03-03 16:11:38 +0100 |
| commit | cf72a0f7c35ee791d5b4a81ef799d006e1b16bda (patch) | |
| tree | 2d4029c928a844b9b8c335c3b6c0730053f1e694 /libvncserver | |
| parent | f5b96e57bfaa05d21efc98f892a1b2b109b17253 (diff) | |
| download | libtdevnc-cf72a0f7c35ee791d5b4a81ef799d006e1b16bda.tar.gz libtdevnc-cf72a0f7c35ee791d5b4a81ef799d006e1b16bda.zip | |
Call WSAGetLastError() everywhere errno is read after a Winsock call.
Winsock does NOT update errno for us, we have fetch the last error
manually using WSAGetLastError().
Diffstat (limited to 'libvncserver')
| -rwxr-xr-x | libvncserver/httpd.c | 3 | ||||
| -rw-r--r-- | libvncserver/rfbserver.c | 6 | ||||
| -rwxr-xr-x | libvncserver/sockets.c | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/libvncserver/httpd.c b/libvncserver/httpd.c index 320e6d2..ad2a51b 100755 --- a/libvncserver/httpd.c +++ b/libvncserver/httpd.c @@ -269,6 +269,9 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) if (got == 0) { rfbErr("httpd: premature connection close\n"); } else { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif if (errno == EAGAIN) { return; } diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index 554c118..73be34c 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -1350,6 +1350,9 @@ rfbBool rfbSendFileTransferChunk(rfbClientPtr cl) n = select(cl->sock + 1, NULL, &wfds, NULL, &tv); if (n<0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif rfbLog("rfbSendFileTransferChunk() select failed: %s\n", strerror(errno)); } /* We have space on the transmit queue */ @@ -1369,6 +1372,9 @@ rfbBool rfbSendFileTransferChunk(rfbClientPtr cl) return retval; case -1: /* TODO : send an error msg to the client... */ +#ifdef WIN32 + errno=WSAGetLastError(); +#endif rfbLog("rfbSendFileTransferChunk(): %s\n",strerror(errno)); retval = rfbSendFileTransferMessage(cl, rfbAbortFileTransfer, 0, 0, 0, NULL); close(cl->fileTransfer.fd); diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c index 48d024c..e1c5a7f 100755 --- a/libvncserver/sockets.c +++ b/libvncserver/sockets.c @@ -567,6 +567,9 @@ rfbWriteExact(rfbClientPtr cl, tv.tv_usec = 0; n = select(sock+1, NULL, &fds, NULL /* &fds */, &tv); if (n < 0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif if(errno==EINTR) continue; rfbLogPerror("WriteExact: select"); |
