Skip to content

Commit 7df7431

Browse files
committed
Honor non-blocking and timeout in POSIX recvmsg
1 parent b409fa0 commit 7df7431

1 file changed

Lines changed: 3 additions & 11 deletions

File tree

src/port/posix/bsd_socket.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,6 @@ int wolfIP_sock_recvmsg(struct wolfIP *ipstack, int sockfd, struct msghdr *msg,
10081008
uint8_t stack_buf[WOLFIP_IOV_STACK_BUF] = {0};
10091009
uint8_t *heap_buf = NULL;
10101010
uint8_t *buf = NULL;
1011-
struct pollfd pfd;
10121011

10131012
if (wolfip_calc_msghdr_len(msg, &total_len) < 0)
10141013
return -WOLFIP_EINVAL;
@@ -1029,16 +1028,9 @@ int wolfIP_sock_recvmsg(struct wolfIP *ipstack, int sockfd, struct msghdr *msg,
10291028
}
10301029
}
10311030

1032-
pfd.fd = sockfd;
1033-
pfd.events = POLLIN;
1034-
pfd.revents = 0;
1035-
while (1) {
1036-
ret = wolfIP_sock_recvfrom(ipstack, sockfd, buf ? buf : msg->msg_iov[0].iov_base,
1037-
total_len, flags, src, src ? &addrlen : NULL);
1038-
if (ret != -WOLFIP_EAGAIN)
1039-
break;
1040-
(void)wolfIP_sock_poll(ipstack, &pfd, 1, -1);
1041-
}
1031+
/* Return EAGAIN to the caller; the wrapper handles non-blocking/timeout. */
1032+
ret = wolfIP_sock_recvfrom(ipstack, sockfd, buf ? buf : msg->msg_iov[0].iov_base,
1033+
total_len, flags, src, src ? &addrlen : NULL);
10421034
if (ret > 0 && msg->msg_iovlen > 1 && buf) {
10431035
wolfip_scatter_iov(msg, buf, (size_t)ret);
10441036
}

0 commit comments

Comments
 (0)