From be28c537b37ce02ee07697edeb072b76e3f4b772 Mon Sep 17 00:00:00 2001 From: Karl Fessel Date: Thu, 9 Sep 2021 15:47:31 +0200 Subject: [PATCH] gnrc/sock: recv avoid spinning xtimer --- sys/net/gnrc/sock/gnrc_sock.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/net/gnrc/sock/gnrc_sock.c b/sys/net/gnrc/sock/gnrc_sock.c index 3ef1a5d155..5ad7d2b1ee 100644 --- a/sys/net/gnrc/sock/gnrc_sock.c +++ b/sys/net/gnrc/sock/gnrc_sock.c @@ -117,6 +117,12 @@ ssize_t gnrc_sock_recv(gnrc_sock_reg_t *reg, gnrc_pktsnip_t **pkt_out, #ifdef MODULE_XTIMER xtimer_t timeout_timer; + /* xtimer_spin would make this never receive anything. + * Avoid that by setting the minimal not spinning timeout. */ + if (timeout < XTIMER_BACKOFF && timeout > 0) { + timeout = XTIMER_BACKOFF; + } + if ((timeout != SOCK_NO_TIMEOUT) && (timeout != 0)) { timeout_timer.callback = _callback_put; timeout_timer.arg = reg;