From 3aa6f359c2b90244727746fad908eb1dab45d5d0 Mon Sep 17 00:00:00 2001 Message-Id: <3aa6f359c2b90244727746fad908eb1dab45d5d0.1717095314.git.mdw@distorted.org.uk> From: Mark Wooding Date: Wed, 26 Sep 2007 16:56:42 +0100 Subject: [PATCH 1/1] more cautious parsing of getifnames() result Organization: Straylight/Edgeware From: Richard Kettlewell --- server/speaker-network.c | 4 ++++ 1 file changed, 4 insertions(+) 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; -- [mdw]