From d66583b54217702ca1c5d21da5f6abbf0469cd0d Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Tue, 12 May 2020 14:01:30 +0200 Subject: [PATCH] gnrc_sock: re-issue MSG_RECV event if there are still received messages ... after `*_recv()` was called. This prevents a client from needing to call `*_recv()` in a loop. --- sys/net/gnrc/sock/gnrc_sock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/net/gnrc/sock/gnrc_sock.c b/sys/net/gnrc/sock/gnrc_sock.c index a1c22d77f3..c6d0c21810 100644 --- a/sys/net/gnrc/sock/gnrc_sock.c +++ b/sys/net/gnrc/sock/gnrc_sock.c @@ -150,6 +150,11 @@ ssize_t gnrc_sock_recv(gnrc_sock_reg_t *reg, gnrc_pktsnip_t **pkt_out, } *pkt_out = pkt; /* set out parameter */ +#if IS_ACTIVE(SOCK_HAS_ASYNC) + if (reg->async_cb.generic && cib_avail(®->mbox.cib)) { + reg->async_cb.generic(reg, SOCK_ASYNC_MSG_RECV, reg->async_cb_arg); + } +#endif #ifdef MODULE_FUZZING prevpkt = pkt; #endif