Corrected fix for bug #34072 (UDP broadcast is received from wrong UDP pcb if udp port matches): pcbs bound to IPADDR_ANY did not receive broadcasts any more (bug #34294)

This commit is contained in:
Simon Goldschmidt 2011-09-22 06:24:58 +02:00
parent a2aa43a426
commit 0aea1b608a

View File

@ -261,10 +261,12 @@ udp_input(struct pbuf *p, struct netif *inp)
#endif /* LWIP_IGMP */ #endif /* LWIP_IGMP */
#if IP_SOF_BROADCAST_RECV #if IP_SOF_BROADCAST_RECV
(broadcast && (pcb->so_options & SOF_BROADCAST) && (broadcast && (pcb->so_options & SOF_BROADCAST) &&
ip_addr_netcmp(ipX_2_ip(&pcb->local_ip), ip_current_dest_addr(), &inp->netmask)))))) { (ipX_addr_isany(0, &pcb->local_ip) ||
ip_addr_netcmp(ipX_2_ip(&pcb->local_ip), ip_current_dest_addr(), &inp->netmask))))))) {
#else /* IP_SOF_BROADCAST_RECV */ #else /* IP_SOF_BROADCAST_RECV */
(broadcast && (broadcast &&
ip_addr_netcmp(ipX_2_ip(&pcb->local_ip), ip_current_dest_addr(), &inp->netmask)))))) { (ipX_addr_isany(0, &pcb->local_ip) ||
ip_addr_netcmp(ipX_2_ip(&pcb->local_ip), ip_current_dest_addr(), &inp->netmask))))))) {
#endif /* IP_SOF_BROADCAST_RECV */ #endif /* IP_SOF_BROADCAST_RECV */
local_match = 1; local_match = 1;
if ((uncon_pcb == NULL) && if ((uncon_pcb == NULL) &&