fix bug for nonblocking udp is zero

This commit is contained in:
xueyunfei
2019-08-21 11:06:31 +08:00
parent 663b2fdb41
commit 8c801667e8
2 changed files with 20 additions and 2 deletions
+19 -1
View File
@@ -2577,13 +2577,16 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
static void select_check_waiters(int s, int has_recvevent, int has_sendevent, int has_errevent)
{
struct lwip_select_cb *scb;
struct lwip_sock *sock;
#if !LWIP_TCPIP_CORE_LOCKING
int last_select_cb_ctr;
SYS_ARCH_DECL_PROTECT(lev);
#endif /* !LWIP_TCPIP_CORE_LOCKING */
LWIP_ASSERT_CORE_LOCKED();
#if ESP_LWIP_SELECT
sock = tryget_socket_unconn(s);
#endif/* ESP_LWIP_SELECT */
#if !LWIP_TCPIP_CORE_LOCKING
SYS_ARCH_PROTECT(lev);
again:
@@ -2605,17 +2608,29 @@ again:
#if LWIP_SOCKET_SELECT
{
/* Test this select call for our socket */
#if ESP_LWIP_SELECT
if (sock->rcvevent) {
#else
if (has_recvevent) {
#endif/* ESP_LWIP_SELECT */
if (scb->readset && FD_ISSET(s, scb->readset)) {
do_signal = 1;
}
}
#if ESP_LWIP_SELECT
if (sock->sendevent) {
#else
if (has_sendevent) {
#endif/* ESP_LWIP_SELECT */
if (!do_signal && scb->writeset && FD_ISSET(s, scb->writeset)) {
do_signal = 1;
}
}
#if ESP_LWIP_SELECT
if (sock->errevent) {
#else
if (has_errevent) {
#endif/* ESP_LWIP_SELECT */
if (!do_signal && scb->exceptset && FD_ISSET(s, scb->exceptset)) {
do_signal = 1;
}
@@ -2645,6 +2660,9 @@ again:
last_select_cb_ctr = select_cb_ctr;
}
SYS_ARCH_UNPROTECT(lev);
#if ESP_LWIP_SELECT
done_socket(sock);
#endif/* ESP_LWIP_SELECT */
#endif
}
#endif /* LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL */
+1 -1
View File
@@ -99,6 +99,6 @@
#define ESP_LWIP_IGMP_TIMERS_ONDEMAND 1
#define ESP_LWIP_MLD6_TIMERS_ONDEMAND 1
#define ESP_GRATUITOUS_ARP 1
#define ESP_LWIP_SELECT 1
#endif /* LWIP_HDR_LWIPOPTS_H */