diff options
| author | Dirk Ziegelmeier <[email protected]> | 2018-12-06 14:40:57 +0100 |
|---|---|---|
| committer | Simon Goldschmidt <[email protected]> | 2019-02-26 16:23:06 +0100 |
| commit | bebf072b776c5c97214bee401ccafc31abbf917c (patch) | |
| tree | f195df2cc2fb8edb931c499255d8f29fa9158338 | |
| parent | 7f53f7ced4a85e42632a19b05ee455ab933877e1 (diff) | |
Fix bug #55171: Binding UDP PCB with different IP type PCBs does not work
by additionally checking IP address type
(cherry picked from commit 2ff0db9a9b047d1c94ddbeea010561d1b9032101)
| -rw-r--r-- | src/core/udp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/udp.c b/src/core/udp.c index 706cfc6b..b3dd462b 100644 --- a/src/core/udp.c +++ b/src/core/udp.c @@ -997,8 +997,10 @@ 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 */ if ((ipcb->local_port == port) && + (IP_GET_TYPE(&ipcb->local_ip) == IP_GET_TYPE(ipaddr)) && /* IP address matches or any IP used? */ - (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(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 */ LWIP_DEBUGF(UDP_DEBUG, |
