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 <haggai.eran@gmail.com>
__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;
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);