--- access.c.orig 2004-03-17 15:22:51.382011200 -0500 +++ access.c 2004-03-17 19:22:33.011779200 -0500 @@ -453,14 +453,24 @@ DefineSelf (int fd) continue; /* - * ignore 'localhost' entries as they're not useful - * on the other end of the wire + * Ignore 'localhost' entries as they're not useful + * on the other end of the wire. */ if (len == 4 && addr[0] == 127 && addr[1] == 0 && addr[2] == 0 && addr[3] == 1) continue; + /* + * Ignore '0.0.0.0' entries as they are + * returned by some OSes for unconfigured NICs but they are + * not useful on the other end of the wire. + */ + if (len == 4 && + addr[0] == 0 && addr[1] == 0 && + addr[2] == 0 && addr[3] == 0) + continue; + XdmcpRegisterConnection (family, (char *)addr, len); @@ -585,12 +595,16 @@ DefineSelf (int fd) #ifdef XDMCP /* * If this is an Internet Address, but not the localhost - * address (127.0.0.1), register it. + * address (127.0.0.1), nor the bogus address (0.0.0.0), + * register it. */ if (family == FamilyInternet && - !(len == 4 && addr[0] == 127 && addr[1] == 0 && - addr[2] == 0 && addr[3] == 1) - ) + !(len == 4 && + ((addr[0] == 127 && addr[1] == 0 && + addr[2] == 0 && addr[3] == 1) || + (addr[0] == 0 && addr[1] == 0 && + addr[2] == 0 && addr[3] == 0))) + ) { XdmcpRegisterConnection (family, (char *)addr, len); broad_addr = *inetaddr; @@ -854,6 +868,16 @@ DefineSelf (int fd) continue; #endif + /* + * Ignore '0.0.0.0' entries as they are + * returned by some OSes for unconfigured NICs but they are + * not useful on the other end of the wire. + */ + if (len == 4 && + addr[0] == 0 && addr[1] == 0 && + addr[2] == 0 && addr[3] == 0) + continue; + XdmcpRegisterConnection (family, (char *)addr, len); #if defined(IPv6) && defined(AF_INET6) @@ -977,7 +1001,7 @@ DefineSelf (int fd) ) continue; /* - * ignore 'localhost' entries as they're not useful + * Ignore 'localhost' entries as they're not useful * on the other end of the wire */ if (ifr->ifa_flags & IFF_LOOPBACK) @@ -992,6 +1016,17 @@ DefineSelf (int fd) IN6_IS_ADDR_LOOPBACK((struct in6_addr *)addr)) continue; #endif + + /* + * Ignore '0.0.0.0' entries as they are + * returned by some OSes for unconfigured NICs but they are + * not useful on the other end of the wire. + */ + if (len == 4 && + addr[0] == 0 && addr[1] == 0 && + addr[2] == 0 && addr[3] == 0) + continue; + XdmcpRegisterConnection(family, (char *)addr, len); #if defined(IPv6) && defined(AF_INET6) if (family == FamilyInternet6)