Browse Source

MT#61625 allow send/recv without endpoint address

Change-Id: I61f301baec69788228325f79194755b828b3858d
pull/1910/head
Richard Fuchs 10 months ago
parent
commit
69ac1b1c9d
1 changed files with 12 additions and 6 deletions
  1. +12
    -6
      lib/socket.c

+ 12
- 6
lib/socket.c View File

@ -323,8 +323,10 @@ INLINE ssize_t __ip_recvfrom_options(socket_t *s, void *buf, size_t len, endpoin
char ctrl[64];
ZERO(msg);
msg.msg_name = &sin;
msg.msg_namelen = s->family->sockaddr_size;
if (ep) {
msg.msg_name = &sin;
msg.msg_namelen = s->family->sockaddr_size;
}
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
msg.msg_control = ctrl;
@ -336,7 +338,9 @@ INLINE ssize_t __ip_recvfrom_options(socket_t *s, void *buf, size_t len, endpoin
ret = recvmsg(s->fd, &msg, 0);
if (ret < 0)
return ret;
s->family->sockaddr2endpoint(ep, &sin);
if (ep)
s->family->sockaddr2endpoint(ep, &sin);
socket_recvfrom_parse_cmsg(&tv, &to, parse, &msg, CMSG_FIRSTHDR(&msg), CMSG_NXTHDR(&msg, cm));
@ -373,9 +377,11 @@ static ssize_t __ip6_recvfrom_to(socket_t *s, void *buf, size_t len, endpoint_t
static ssize_t __ip_sendmsg(socket_t *s, struct msghdr *mh, const endpoint_t *ep) {
struct sockaddr_storage sin;
s->family->endpoint2sockaddr(&sin, ep);
mh->msg_name = &sin;
mh->msg_namelen = s->family->sockaddr_size;
if (ep) {
s->family->endpoint2sockaddr(&sin, ep);
mh->msg_name = &sin;
mh->msg_namelen = s->family->sockaddr_size;
}
return sendmsg(s->fd, mh, 0);
}


Loading…
Cancel
Save