From: Richard Kettlewell Date: Wed, 26 Sep 2007 15:56:42 +0000 (+0100) Subject: more cautious parsing of getifnames() result X-Git-Tag: debian-1_5_99dev8~228 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/3aa6f359c2b90244727746fad908eb1dab45d5d0 more cautious parsing of getifnames() result --- diff --git a/server/speaker-network.c b/server/speaker-network.c index c81b7db..5b1ccce 100644 --- a/server/speaker-network.c +++ b/server/speaker-network.c @@ -155,7 +155,11 @@ static void network_init(void) { if(getifaddrs(&ifs) < 0) fatal(errno, "error calling getifaddrs"); while(ifs) { + /* (At least on Darwin) IFF_BROADCAST might be set but ifa_broadaddr + * still a null pointer. It turns out that there's a subsequent entry + * for he same interface which _does_ have ifa_broadaddr though... */ if((ifs->ifa_flags & IFF_BROADCAST) + && ifs->ifa_broadaddr && sockaddr_equal(ifs->ifa_broadaddr, res->ai_addr)) break; ifs = ifs->ifa_next;