diff --git a/libvncclient/sockets.c b/libvncclient/sockets.c index 334928e5230d6bcc6c3561e188fcd4258cb99ed9..4183192c620b3c755b8ea15307b63649d9df72a7 100644 --- a/libvncclient/sockets.c +++ b/libvncclient/sockets.c @@ -262,6 +262,9 @@ WriteToRFBServer(rfbClient* client, char *buf, int n) j = write(client->sock, buf + i, (n - i)); if (j <= 0) { if (j < 0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif if (errno == EWOULDBLOCK || #ifdef LIBVNCSERVER_ENOENT_WORKAROUND errno == ENOENT || @@ -735,8 +738,12 @@ int WaitForMessage(rfbClient* client,unsigned int usecs) FD_SET(client->sock,&fds); num=select(client->sock+1, &fds, NULL, NULL, &timeout); - if(num<0) + if(num<0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif rfbClientLog("Waiting for message failed: %d (%s)\n",errno,strerror(errno)); + } return num; } diff --git a/libvncclient/tls.c b/libvncclient/tls.c index 206dbda3cbfcc3421003febbab6fcc33d7b5e161..eb894133c5a8e0f1052ffb31482d8ad683bc023d 100644 --- a/libvncclient/tls.c +++ b/libvncclient/tls.c @@ -62,6 +62,9 @@ PushTLS(gnutls_transport_ptr_t transport, const void *data, size_t len) ret = write(client->sock, data, len); if (ret < 0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif if (errno == EINTR) continue; return -1; } @@ -81,6 +84,9 @@ PullTLS(gnutls_transport_ptr_t transport, void *data, size_t len) ret = read(client->sock, data, len); if (ret < 0) { +#ifdef WIN32 + errno=WSAGetLastError(); +#endif if (errno == EINTR) continue; return -1; } diff --git a/libvncserver/httpd.c b/libvncserver/httpd.c index 320e6d22a6747428b1a85d2b2b5977afcfec138c..ad2a51b8209d3f157bdb293bd870021281ad62ec 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 554c1189630209ae2beeabca32a46bd6df845074..73be34cb8a8cc70a19ff10d85b928d8e1cfed87d 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 48d024c3639c56f7b96fa0b3ed69328e9e44733a..e1c5a7f9350ed82158f07ba299ab1df38703c631 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");