mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-28 09:19:53 +00:00
Allow backlog to be updated
This commit adds support to the sockets and netconn layer to update the backlog by calling listen when the netconn is already in the listen state. When backlog is not enabled, the call returns successfully This commit also introduces a macro for setting the backlog value that prevents a 0 sized (invalid) backlog
This commit is contained in:
parent
163d7f9791
commit
8cb64698aa
@ -1308,6 +1308,12 @@ lwip_netconn_do_listen(struct api_msg_msg *msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (msg->conn->state == NETCONN_LISTEN) {
|
||||
/* already listening, allow updating of the backlog */
|
||||
msg->err = ERR_OK;
|
||||
#if TCP_LISTEN_BACKLOG
|
||||
tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
|
||||
#endif /* TCP_LISTEN_BACKLOG */
|
||||
}
|
||||
} else {
|
||||
msg->err = ERR_ARG;
|
||||
|
@ -587,7 +587,7 @@ tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog)
|
||||
#endif /* LWIP_CALLBACK_API */
|
||||
#if TCP_LISTEN_BACKLOG
|
||||
lpcb->accepts_pending = 0;
|
||||
lpcb->backlog = (backlog ? backlog : 1);
|
||||
tcp_backlog_set(lpcb, backlog);
|
||||
#endif /* TCP_LISTEN_BACKLOG */
|
||||
TCP_REG(&tcp_listen_pcbs.pcbs, (struct tcp_pcb *)lpcb);
|
||||
return (struct tcp_pcb *)lpcb;
|
||||
|
@ -362,6 +362,9 @@ void tcp_err (struct tcp_pcb *pcb, tcp_err_fn err);
|
||||
#define tcp_accepted(pcb) do { \
|
||||
LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", pcb->state == LISTEN); \
|
||||
(((struct tcp_pcb_listen *)(pcb))->accepts_pending--); } while(0)
|
||||
#define tcp_backlog_set(pcb, new_backlog) do { \
|
||||
LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", (pcb)->state == LISTEN); \
|
||||
((struct tcp_pcb_listen *)(pcb))->backlog = ((new_backlog) ? (new_backlog) : 1); } while(0)
|
||||
#else /* TCP_LISTEN_BACKLOG */
|
||||
#define tcp_accepted(pcb) LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", \
|
||||
(pcb)->state == LISTEN)
|
||||
|
Loading…
Reference in New Issue
Block a user