| |
@@ -0,0 +1,101 @@
|
| |
+ diff --git a/open-vm-tools/lib/asyncsocket/asyncSocketVTable.h b/open-vm-tools/lib/asyncsocket/asyncSocketVTable.h
|
| |
+ index a69b6567..01d5be9d 100644
|
| |
+ --- a/lib/asyncsocket/asyncSocketVTable.h
|
| |
+ +++ b/lib/asyncsocket/asyncSocketVTable.h
|
| |
+ @@ -131,8 +131,8 @@ typedef struct AsyncSocketVTable {
|
| |
+ int timeoutMS);
|
| |
+ int (*doOneMsg)(AsyncSocket *s, Bool read, int timeoutMS);
|
| |
+ int (*waitForConnection)(AsyncSocket *s, int timeoutMS);
|
| |
+ - int (*waitForReadMultiple)(AsyncSocket **asock, int numSock, int timeoutMS,
|
| |
+ - int *outIdx);
|
| |
+ + int (*waitForReadMultiple)(AsyncSocket **asock, size_t numSock,
|
| |
+ + int timeoutMS, int *outIdx);
|
| |
+ int (*peek)(AsyncSocket *asock, void *buf, int len, void *cb, void *cbData);
|
| |
+
|
| |
+ /*
|
| |
+ diff --git a/open-vm-tools/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c
|
| |
+ index 05147d2e..b827f66b 100644
|
| |
+ --- a/lib/asyncsocket/asyncsocket.c
|
| |
+ +++ b/lib/asyncsocket/asyncsocket.c
|
| |
+ @@ -370,7 +370,7 @@ static int AsyncTCPSocketRecvPartialBlocking(AsyncSocket *s, void *buf, int len,
|
| |
+ static int AsyncTCPSocketSendBlocking(AsyncSocket *s, void *buf, int len,
|
| |
+ int *sent, int timeoutMS);
|
| |
+ static int AsyncTCPSocketDoOneMsg(AsyncSocket *s, Bool read, int timeoutMS);
|
| |
+ -static int AsyncTCPSocketWaitForReadMultiple(AsyncSocket **asock, int numSock,
|
| |
+ +static int AsyncTCPSocketWaitForReadMultiple(AsyncSocket **asock, size_t numSock,
|
| |
+ int timeoutMS, int *outIdx);
|
| |
+ static int AsyncTCPSocketSetOption(AsyncSocket *asyncSocket,
|
| |
+ AsyncSocketOpts_Layer layer,
|
| |
+ @@ -2810,7 +2810,7 @@ AsyncTCPSocketPeek(AsyncSocket *base, // IN:
|
| |
+
|
| |
+ static int
|
| |
+ AsyncTCPSocketPollWork(AsyncTCPSocket **asock, // IN:
|
| |
+ - int numSock, // IN:
|
| |
+ + size_t numSock, // IN:
|
| |
+ void *p, // IN:
|
| |
+ Bool read, // IN:
|
| |
+ int timeoutMS, // IN:
|
| |
+ @@ -2830,11 +2830,11 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock, // IN:
|
| |
+ struct fd_set rwfds;
|
| |
+ struct fd_set exceptfds;
|
| |
+ #endif
|
| |
+ - int i;
|
| |
+ + size_t i;
|
| |
+ int retval;
|
| |
+
|
| |
+ ASSERT(outAsock != NULL && *outAsock == NULL && asock != NULL &&
|
| |
+ - numSock > 0);
|
| |
+ + numSock != 0);
|
| |
+
|
| |
+ for (i = 0; i < numSock; i++) {
|
| |
+ if (read && SSL_Pending(asock[i]->sslSock)) {
|
| |
+ @@ -2855,7 +2855,7 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock, // IN:
|
| |
+ retval = poll(pfd, numSock, timeoutMS);
|
| |
+ AsyncTCPSocketLock(parentSock);
|
| |
+ } else {
|
| |
+ - for (i = numSock - 1; i >= 0; i--) {
|
| |
+ + for (i = numSock; i-- > 0; ) {
|
| |
+ AsyncTCPSocketUnlock(asock[i]);
|
| |
+ }
|
| |
+ retval = poll(pfd, numSock, timeoutMS);
|
| |
+ @@ -2881,7 +2881,7 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock, // IN:
|
| |
+ &exceptfds, timeoutMS >= 0 ? &tv : NULL);
|
| |
+ AsyncTCPSocketLock(parentSock);
|
| |
+ } else {
|
| |
+ - for (i = numSock - 1; i >= 0; i--) {
|
| |
+ + for (i = numSock; i-- > 0; ) {
|
| |
+ AsyncTCPSocketUnlock(asock[i]);
|
| |
+ }
|
| |
+ retval = select(1, read ? &rwfds : NULL, read ? NULL : &rwfds,
|
| |
+ @@ -3035,7 +3035,7 @@ AsyncTCPSocketPoll(AsyncTCPSocket *s, // IN:
|
| |
+ #else
|
| |
+ void *p = NULL;
|
| |
+ #endif
|
| |
+ - int numSock = 0;
|
| |
+ + size_t numSock = 0;
|
| |
+
|
| |
+ if (read && s->fd == -1) {
|
| |
+ if (!s->listenAsock4 && !s->listenAsock6) {
|
| |
+ @@ -3081,11 +3081,11 @@ AsyncTCPSocketPoll(AsyncTCPSocket *s, // IN:
|
| |
+
|
| |
+ static int
|
| |
+ AsyncTCPSocketWaitForReadMultiple(AsyncSocket **asock, // IN:
|
| |
+ - int numSock, // IN:
|
| |
+ + size_t numSock, // IN:
|
| |
+ int timeoutMS, // IN:
|
| |
+ int *outIdx) // OUT:
|
| |
+ {
|
| |
+ - int i;
|
| |
+ + size_t i;
|
| |
+ int err;
|
| |
+ AsyncTCPSocket *outAsock = NULL;
|
| |
+ #ifndef _WIN32
|
| |
+ @@ -3099,7 +3099,7 @@ AsyncTCPSocketWaitForReadMultiple(AsyncSocket **asock, // IN:
|
| |
+ }
|
| |
+ err = AsyncTCPSocketPollWork((AsyncTCPSocket **)asock, numSock, p, TRUE,
|
| |
+ timeoutMS, NULL, &outAsock);
|
| |
+ - for (i = numSock - 1; i >= 0; i--) {
|
| |
+ + for (i = numSock; i-- > 0; ) {
|
| |
+ AsyncTCPSocket *tcpAsock = TCPSocket(asock[i]);
|
| |
+ if (outAsock == tcpAsock) {
|
| |
+ *outIdx = i;
|
| |