LWIPStack: set sockets non-blocking

When sockets were opened, they were not set non-blocking, but only had
their timeout set to 1ms.

TCP sockets were set to non-blocking on connect or accept, but UDP
sockets were left blocking with 1ms timeout.

This led to unnecessary delays when checking for data from an empty UDP
socket.

Change sockets to be non-blocking on open instead of setting the
timeout. As TCP sockets were already non-blocking, the necessary event
handling is already in place, and no other changes are required.
pull/13205/head
Kevin Bracey 2020-06-30 11:30:27 +03:00
parent a6207cadad
commit 134abf8e1f
1 changed files with 2 additions and 4 deletions

View File

@ -271,7 +271,7 @@ nsapi_error_t LWIP::socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto)
return NSAPI_ERROR_NO_SOCKET;
}
netconn_set_recvtimeout(s->conn, 1);
netconn_set_nonblocking(s->conn, true);
*(struct mbed_lwip_socket **)handle = s;
return 0;
}
@ -376,7 +376,7 @@ nsapi_error_t LWIP::socket_accept(nsapi_socket_t server, nsapi_socket_t *handle,
return err_remap(err);
}
netconn_set_recvtimeout(ns->conn, 1);
netconn_set_nonblocking(ns->conn, true);
*(struct mbed_lwip_socket **)handle = ns;
ip_addr_t peer_addr;
@ -390,8 +390,6 @@ nsapi_error_t LWIP::socket_accept(nsapi_socket_t server, nsapi_socket_t *handle,
address->set_port(port);
}
netconn_set_nonblocking(ns->conn, true);
return 0;
#else
return NSAPI_ERROR_UNSUPPORTED;