Index: in_pcb.c =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/in_pcb.c,v retrieving revision 1.147 diff -u -p -r1.147 in_pcb.c --- in_pcb.c 20 May 2004 06:35:02 -0000 1.147 +++ in_pcb.c 20 May 2004 17:26:42 -0000 @@ -1023,22 +1023,21 @@ in_pcblookup_hash(pcbinfo, faddr, fport_ if ((inp->inp_vflag & INP_IPV4) == 0) continue; #endif - if (inp->inp_faddr.s_addr == INADDR_ANY && - inp->inp_lport == lport) { - if (ifp && ifp->if_type == IFT_FAITH && - (inp->inp_flags & INP_FAITH) == 0) - continue; - if (inp->inp_laddr.s_addr == laddr.s_addr) - return (inp); - else if (inp->inp_laddr.s_addr == INADDR_ANY) { + if (inp->inp_faddr.s_addr != INADDR_ANY || + inp->inp_lport != lport) + continue; + if (ifp && ifp->if_type == IFT_FAITH && + (inp->inp_flags & INP_FAITH) == 0) + continue; + if (inp->inp_laddr.s_addr == laddr.s_addr) + return (inp); + else if (inp->inp_laddr.s_addr == INADDR_ANY) { #if defined(INET6) - if (INP_CHECK_SOCKAF(inp->inp_socket, - AF_INET6)) - local_wild_mapped = inp; - else + if (INP_CHECK_SOCKAF(inp->inp_socket, AF_INET6)) + local_wild_mapped = inp; + else #endif /* defined(INET6) */ - local_wild = inp; - } + local_wild = inp; } } #if defined(INET6)