summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--extmod/modlwip.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 3ad51f94d5..4f29a5723b 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -211,8 +211,11 @@ typedef struct _lwip_socket_obj_t {
} lwip_socket_obj_t;
static inline void poll_sockets(void) {
- // TODO: Allow to override by ports
+#ifdef MICROPY_EVENT_POLL_HOOK
+ MICROPY_EVENT_POLL_HOOK;
+#else
mp_hal_delay_ms(1);
+#endif
}
/*******************************************************************************/
@@ -348,7 +351,7 @@ STATIC mp_uint_t lwip_udp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_
}
} else {
while (socket->incoming.pbuf == NULL) {
- mp_hal_delay_ms(100);
+ poll_sockets();
}
}
}
@@ -605,7 +608,7 @@ STATIC mp_obj_t lwip_socket_accept(mp_obj_t self_in) {
}
} else {
while (socket->incoming.connection == NULL) {
- mp_hal_delay_ms(100);
+ poll_sockets();
}
}
}
@@ -688,7 +691,7 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
}
} else {
while (socket->state == STATE_CONNECTING) {
- mp_hal_delay_ms(100);
+ poll_sockets();
}
}
if (socket->state == STATE_CONNECTED) {
@@ -1011,7 +1014,7 @@ STATIC mp_obj_t lwip_getaddrinfo(mp_obj_t host_in, mp_obj_t port_in) {
}
case ERR_INPROGRESS: {
while(!lwip_dns_returned) {
- mp_hal_delay_ms(100);
+ poll_sockets();
}
if (lwip_dns_returned == 2) {
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(ENOENT)));