mirror of https://github.com/ARMmbed/mbed-os.git
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
parent
a6207cadad
commit
134abf8e1f
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue