From 8afe888fb34b1d121bae7701c51d0e7d0c96cbb5 Mon Sep 17 00:00:00 2001 From: Kumar Kaushik <kaushikk@vmware.com> Date: Mon, 20 Nov 2017 15:21:56 -0800 Subject: [PATCH] Adding more debug for socket read failures Change-Id: I85b10413b4fe9273a11e46da038aa2e31ffd0318 (cherry picked from commit a0c4357aca99a08a28d10875aff87c6e3d1798be) --- common/sockinterface.c | 11 +++++------ transport/posix/socket.c | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/common/sockinterface.c b/common/sockinterface.c index a53c4a5..403189c 100644 --- a/common/sockinterface.c +++ b/common/sockinterface.c @@ -521,11 +521,10 @@ VmRESTTcpReceiveNewData( { VMREST_LOG_DEBUG(pRESTHandle,"%s","Calling closed connection...."); /**** Close connection ****/ - dwError = VmRESTDisconnectClient( - pRESTHandle, - pSocket - ); - BAIL_ON_VMREST_ERROR(dwError); + VmRESTDisconnectClient( + pRESTHandle, + pSocket + ); /**** free request object memory ****/ if (pRequest) @@ -542,7 +541,7 @@ VmRESTTcpReceiveNewData( error: - VMREST_LOG_DEBUG(pRESTHandle,"ERROR code %u", dwError); + VMREST_LOG_ERROR(pRESTHandle,"ERROR code %u", dwError); goto cleanup; } diff --git a/transport/posix/socket.c b/transport/posix/socket.c index 029633a..79c7a38 100644 --- a/transport/posix/socket.c +++ b/transport/posix/socket.c @@ -539,6 +539,8 @@ VmSockPosixWaitForEvent( BAIL_ON_VMREST_ERROR(dwError); } + VMREST_LOG_DEBUG(pRESTHandle,"Notification on socket fd %d", pEventSocket->fd); + if (pEvent->events & (EPOLLERR | EPOLLHUP)) { eventType = VM_SOCK_EVENT_TYPE_CONNECTION_CLOSED; @@ -919,8 +921,23 @@ VmSockPosixRead( error: - if (pszBufPrev && pSocket) + if (pSocket) + { + VMREST_LOG_ERROR(pRESTHandle,"Socket read failed with Socket fd %d, dwError = %u, nRead = %d, errno = %u, errorCode = %u", pSocket->fd, dwError, nRead, errno, errorCode); + } + else + { + VMREST_LOG_ERROR(pRESTHandle,"Socket read failed with dwError = %u, nRead = %d, errno = %u, errorCode = %u", dwError, nRead, errno, errorCode); + } + + if (pszBufPrev && pSocket && pRESTHandle->pSockContext) { + /**** Delete the socket from poller ****/ + VmSockPosixEventQueueDelete_inlock( + pRESTHandle->pSockContext->pEventQueue, + pSocket + ); + VmRESTFreeMemory(pszBufPrev); pszBufPrev = NULL; pSocket->pszBuffer = NULL; @@ -1542,6 +1559,14 @@ VmSockPosixSetRequestHandle( pSocket->pTimerSocket ); BAIL_ON_VMREST_ERROR(dwError); + + /**** Delete actual IO socket from poller ****/ + dwError = VmSockPosixEventQueueDelete_inlock( + pQueue, + pSocket + ); + BAIL_ON_VMREST_ERROR(dwError); + if (pSocket->pTimerSocket->fd > 0) { close(pSocket->pTimerSocket->fd);