From: Haggai Eran Date: Tue, 19 Feb 2019 13:04:42 +0000 (+0200) Subject: ldp: return byte count from a successful recvfrom X-Git-Tag: v19.04-rc1~458 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F84%2F17684%2F3;p=vpp.git ldp: return byte count from a successful recvfrom Unless there's an error, recvfrom should return the number of bytes received. The current code returns zero on success due to ldp_copy_ep_to_sockaddr returning zero. Change-Id: Ib843b99a08c44b5ee2d16efe9edab0cf5df65170 Signed-off-by: Haggai Eran --- diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c index f3ac3107a50..e0fb93534e9 100644 --- a/src/vcl/ldp.c +++ b/src/vcl/ldp.c @@ -1478,7 +1478,7 @@ recvfrom (int fd, void *__restrict buf, size_t n, int flags, __SOCKADDR_ARG addr, socklen_t * __restrict addr_len) { vls_handle_t sid; - ssize_t size; + ssize_t size, rv; if ((errno = -ldp_init ())) return -1; @@ -1495,7 +1495,11 @@ recvfrom (int fd, void *__restrict buf, size_t n, int flags, size = vls_recvfrom (sid, buf, n, flags, &ep); if (size > 0) - size = ldp_copy_ep_to_sockaddr (addr, addr_len, &ep); + { + rv = ldp_copy_ep_to_sockaddr (addr, addr_len, &ep); + if (rv < 0) + size = rv; + } } else size = vls_recvfrom (sid, buf, n, flags, NULL);