diff -ru c-rest-engine-1.1/transport/posix/defines.h c-rest-engine-1.1-modified/transport/posix/defines.h
--- c-rest-engine-1.1/transport/posix/defines.h	2017-10-31 11:20:36.000000000 -0700
+++ c-rest-engine-1.1-modified/transport/posix/defines.h	2017-11-10 15:56:01.170279430 -0800
@@ -50,6 +50,7 @@
 
 /**** Transport internal error codes ****/
 #define VM_SOCK_POSIX_ERROR_SYS_CALL_FAILED    5100
+#define VM_SOCK_POSIX_ERROR_BROKEN_PIPE        5101
 #define MAX_RETRY_ATTEMPTS                     50000
 
 
diff -ru c-rest-engine-1.1/transport/posix/socket.c c-rest-engine-1.1-modified/transport/posix/socket.c
--- c-rest-engine-1.1/transport/posix/socket.c	2017-10-31 11:20:36.000000000 -0700
+++ c-rest-engine-1.1-modified/transport/posix/socket.c	2017-11-10 15:55:25.410277664 -0800
@@ -879,10 +879,16 @@
     {
         dwError = REST_ENGINE_SUCCESS;
     }
-    else
+    else if (nRead < 0)
     {
+        VMREST_LOG_ERROR(pRESTHandle, "Socket read failed with error code %u", errorCode);
         dwError = errorCode;
     }
+    else if (nRead == 0)
+    {
+        VMREST_LOG_ERROR(pRESTHandle,"%s", "Socket read failed due to broken pipe");
+        dwError = VM_SOCK_POSIX_ERROR_BROKEN_PIPE;
+    }
     BAIL_ON_VMREST_ERROR(dwError);
 
     if (nPrevBuf >= pRESTHandle->pRESTConfig->maxDataPerConnMB)
@@ -980,7 +986,7 @@
              nWritten = write(pSocket->fd, (pszBuffer + nWrittenTotal) ,nRemaining);
              errorCode = errno;
          }
-         if (nWritten >= 0)
+         if (nWritten > 0)
          {
              nWrittenTotal += nWritten;
              nRemaining -= nWritten;
@@ -1017,6 +1023,12 @@
                      BAIL_ON_VMREST_ERROR(dwError);
                  }
              }
+             else
+             {
+                 dwError = VM_SOCK_POSIX_ERROR_SYS_CALL_FAILED;
+                 VMREST_LOG_ERROR(pRESTHandle,"Socket write failed with error code %u, dwError %u, nWritten %d", errorCode, dwError, nWritten);
+                 BAIL_ON_VMREST_ERROR(dwError);
+             }
         }
     }
     VMREST_LOG_DEBUG(pRESTHandle,"\nWrite Status on Socket with fd = %d\nRequested: %d nBufLen\nWritten %d bytes\n", pSocket->fd, nBufLen, nWrittenTotal);