From fda874e406f47a37d5e26d402778674d777ffc2f Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sat, 2 Jan 2016 23:56:27 +0200 Subject: [PATCH] extmod/modlwip: Support non-blocking recv(). --- extmod/modlwip.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/extmod/modlwip.c b/extmod/modlwip.c index 76b605ee8b..7fe1416206 100644 --- a/extmod/modlwip.c +++ b/extmod/modlwip.c @@ -385,6 +385,13 @@ STATIC mp_uint_t lwip_tcp_send(lwip_socket_obj_t *socket, const byte *buf, mp_ui // Helper function for recv/recvfrom to handle TCP packets STATIC mp_uint_t lwip_tcp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_t len, int *_errno) { if (socket->incoming.pbuf == NULL) { + + // Non-blocking socket + if (socket->timeout == 0) { + *_errno = EAGAIN; + return -1; + } + mp_uint_t start = mp_hal_ticks_ms(); while (socket->state == STATE_CONNECTED && socket->incoming.pbuf == NULL) { if (socket->timeout != -1 && mp_hal_ticks_ms() - start > socket->timeout) {