kopia lustrzana https://github.com/micropython/micropython
wiznet5k: Technically ::send and ::recv is valid in CLOSE_WAIT state.
Signed-off-by: Jared Hancock <jared@greezybacon.me>pull/14265/head
rodzic
fc03d95493
commit
70190b0c75
|
@ -120,10 +120,9 @@ typedef struct _wiznet5k_obj_t {
|
||||||
uint8_t socket_used;
|
uint8_t socket_used;
|
||||||
bool active;
|
bool active;
|
||||||
uint8_t *dhcp_buf;
|
uint8_t *dhcp_buf;
|
||||||
uint8_t dhcp_retry;
|
|
||||||
uint8_t dhcp_state;
|
uint8_t dhcp_state;
|
||||||
mp_int_t dhcp_socket;
|
mp_int_t dhcp_socket;
|
||||||
uint32_t dhcp_timeout;
|
uint32_t dhcp_renew;
|
||||||
#endif
|
#endif
|
||||||
} wiznet5k_obj_t;
|
} wiznet5k_obj_t;
|
||||||
|
|
||||||
|
@ -396,8 +395,8 @@ static void wiznet5k_dhcp_poll(void) {
|
||||||
wiznet5k_obj.dhcp_socket = -1;
|
wiznet5k_obj.dhcp_socket = -1;
|
||||||
|
|
||||||
// Run about once per minute
|
// Run about once per minute
|
||||||
wiznet5k_obj.dhcp_timeout = mp_hal_ticks_ms() + 60000;
|
wiznet5k_obj.dhcp_renew = mp_hal_ticks_ms() + 60000;
|
||||||
} else if (mp_hal_ticks_ms() > wiznet5k_obj.dhcp_timeout) {
|
} else if (mp_hal_ticks_ms() > wiznet5k_obj.dhcp_renew) {
|
||||||
mp_uint_t sn = wiznet5k_allocate_socket();
|
mp_uint_t sn = wiznet5k_allocate_socket();
|
||||||
if (sn != -1) {
|
if (sn != -1) {
|
||||||
DHCP_SOCKET = sn;
|
DHCP_SOCKET = sn;
|
||||||
|
@ -715,10 +714,12 @@ static mp_uint_t wiznet5k_socket_send(mod_network_socket_obj_t *socket, const by
|
||||||
wiznet5k_socket_close(socket);
|
wiznet5k_socket_close(socket);
|
||||||
*_errno = -ret;
|
*_errno = -ret;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
} else if (ret == SOCK_BUSY) {
|
||||||
else if (ret == SOCK_BUSY && getSn_SR(socket->fileno) == SOCK_ESTABLISHED) {
|
uint8_t status = getSn_SR(socket->fileno);
|
||||||
*_errno = MP_EAGAIN;
|
if (status == SOCK_ESTABLISHED || status == SOCK_CLOSE_WAIT) {
|
||||||
return -1;
|
*_errno = MP_EAGAIN;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -744,12 +745,14 @@ static mp_uint_t wiznet5k_socket_recv(mod_network_socket_obj_t *socket, byte *bu
|
||||||
wiznet5k_socket_close(socket);
|
wiznet5k_socket_close(socket);
|
||||||
*_errno = -ret;
|
*_errno = -ret;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
// NOTE: SOCK_BUSY is zero (0) which is confusing if the socket is closed
|
// NOTE: SOCK_BUSY is zero (0) which is confusing if the socket is closed
|
||||||
// and at EOF
|
// and at EOF
|
||||||
else if (ret == SOCK_BUSY && getSn_SR(socket->fileno) == SOCK_ESTABLISHED) {
|
} else if (ret == SOCK_BUSY) {
|
||||||
*_errno = MP_EAGAIN;
|
uint8_t status = getSn_SR(socket->fileno);
|
||||||
return -1;
|
if (status == SOCK_ESTABLISHED || status == SOCK_CLOSE_WAIT) {
|
||||||
|
*_errno = MP_EAGAIN;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue