diff options
author | Damien George <damien.p.george@gmail.com> | 2019-05-28 17:43:00 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-05-28 17:43:00 +1000 |
commit | 883e987b90e82f0a9ab223910890da2c5d50b9d3 (patch) | |
tree | c8ee0a4094b497e41daef1809874a03074806748 | |
parent | 8c9758ff2ee5c5b70e4eab5fe0396de2e21299b0 (diff) |
esp32/modsocket: Raise EAGAIN when accept fails in non-blocking mode.
EAGAIN should be for pure non-blocking mode and ETIMEDOUT for when there is
a finite (but non-zero) timeout enabled.
-rw-r--r-- | ports/esp32/modsocket.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ports/esp32/modsocket.c b/ports/esp32/modsocket.c index 1d7aec5ef..8b80e631d 100644 --- a/ports/esp32/modsocket.c +++ b/ports/esp32/modsocket.c @@ -253,7 +253,13 @@ STATIC mp_obj_t socket_accept(const mp_obj_t arg0) { if (errno != EAGAIN) exception_from_errno(errno); check_for_exceptions(); } - if (new_fd < 0) mp_raise_OSError(MP_ETIMEDOUT); + if (new_fd < 0) { + if (self->retries == 0) { + mp_raise_OSError(MP_EAGAIN); + } else { + mp_raise_OSError(MP_ETIMEDOUT); + } + } // create new socket object socket_obj_t *sock = m_new_obj_with_finaliser(socket_obj_t); |