vcl: fix ldp read on closing session

Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I60be191866d20721951ad22f571a2a3275511e12
diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c
index d0cf2b9..95c0edc 100644
--- a/src/vcl/ldp.c
+++ b/src/vcl/ldp.c
@@ -380,24 +380,19 @@
   vlsh = ldp_fd_to_vlsh (fd);
   if (vlsh != VLS_INVALID_HANDLE)
     {
-      do
+      for (i = 0; i < iovcnt; ++i)
 	{
-	  for (i = 0; i < iovcnt; ++i)
+	  rv = vls_read (vlsh, iov[i].iov_base, iov[i].iov_len);
+	  if (rv <= 0)
+	    break;
+	  else
 	    {
-	      rv = vls_read (vlsh, iov[i].iov_base, iov[i].iov_len);
-	      if (rv < 0)
+	      total += rv;
+	      if (rv < iov[i].iov_len)
 		break;
-	      else
-		{
-		  total += rv;
-		  if (rv < iov[i].iov_len)
-		    break;
-		}
 	    }
 	}
-      while ((rv >= 0) && (total == 0));
-
-      if (rv < 0)
+      if (rv < 0 && total == 0)
 	{
 	  errno = -rv;
 	  size = -1;
diff --git a/src/vcl/vcl_private.h b/src/vcl/vcl_private.h
index faab1c2..b50bad2 100644
--- a/src/vcl/vcl_private.h
+++ b/src/vcl/vcl_private.h
@@ -543,8 +543,8 @@
 static inline int
 vcl_session_closing_error (vcl_session_t * s)
 {
-  return s->session_state == STATE_DISCONNECT
-    ? VPPCOM_ECONNRESET : VPPCOM_ECONNABORTED;
+  /* Return 0 on closing sockets */
+  return s->session_state == STATE_DISCONNECT ? VPPCOM_ECONNRESET : 0;
 }
 
 static inline int