From 8f39b20488271aa53d30f5e1fe8407b1fd2bd2f8 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 22 Jul 2020 17:51:47 +0900 Subject: [PATCH] net/usrsock: Fix recv() couldn't peek data Fix a bug that recv() couldn't peek receive data. recv() would be failed by previous recv() call with MSG_PEEK. --- net/usrsock/usrsock_recvfrom.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/net/usrsock/usrsock_recvfrom.c b/net/usrsock/usrsock_recvfrom.c index 588ada77d9b..fd01cc1d8b3 100644 --- a/net/usrsock/usrsock_recvfrom.c +++ b/net/usrsock/usrsock_recvfrom.c @@ -424,6 +424,15 @@ ssize_t usrsock_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len, */ outaddrlen = state.valuelen_nontrunc; + + /* If the MSG_PEEK flag is enabled, it will only peek + * from the buffer, so remark the input as ready. + */ + + if (flags & MSG_PEEK) + { + conn->flags |= USRSOCK_EVENT_RECVFROM_AVAIL; + } } }