Correct UDP rebind check.

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
This commit is contained in:
Matthias Hofmann 2018-06-04 16:28:40 +02:00 committed by Simon Goldschmidt
parent a75332a407
commit 8e23b8d903

View File

@ -984,8 +984,9 @@ udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
{ {
/* port matches that of PCB in list and REUSEADDR not set -> reject */ /* port matches that of PCB in list and REUSEADDR not set -> reject */
if ((ipcb->local_port == port) && if ((ipcb->local_port == port) &&
/* IP address matches? */ /* IP address matches or any IP used? */
ip_addr_cmp(&ipcb->local_ip, ipaddr)) { (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
ip_addr_isany(&ipcb->local_ip))) {
/* other PCB already binds to this local IP and port */ /* other PCB already binds to this local IP and port */
LWIP_DEBUGF(UDP_DEBUG, LWIP_DEBUGF(UDP_DEBUG,
("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); ("udp_bind: local port %"U16_F" already bound by another pcb\n", port));