summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-01-02 23:56:27 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-09 12:39:33 +0700
commitfda874e406f47a37d5e26d402778674d777ffc2f (patch)
tree8c28d7f6ad8ca35105d77feccb0e44ed028e5000
parent7379be3673804528696a6b28d0d47dc42a939a9c (diff)
downloadmicropython-fda874e406f47a37d5e26d402778674d777ffc2f.tar.gz
micropython-fda874e406f47a37d5e26d402778674d777ffc2f.zip
extmod/modlwip: Support non-blocking recv().
-rw-r--r--extmod/modlwip.c7
1 files changed, 7 insertions, 0 deletions
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) {