X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSocket.hh;h=a0f2a7cae65bf2da03ee8b57af64f6b754e06c19;hp=f1604663b038c37ff408061ca50db4d914ccd38a;hb=19d555013569026c9e68784ea560cd2e5a21bc5e;hpb=1a9061caa8fe73b4b34a37fe467e145bba7bd2f5 diff --git a/src/Moof/Socket.hh b/src/Moof/Socket.hh index f160466..a0f2a7c 100644 --- a/src/Moof/Socket.hh +++ b/src/Moof/Socket.hh @@ -90,7 +90,16 @@ public: static SocketAddress broadcast(const std::string& service) { - return SocketAddress(service, "255.255.255.255", SOCK_DGRAM); + std::istringstream stream(service); + unsigned short port; + stream >> port; + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_BROADCAST; + memset(&addr.sin_zero, 0, sizeof(addr.sin_zero)); + return SocketAddress((sockaddr*)&addr, sizeof(addr), SOCK_DGRAM); } @@ -193,11 +202,10 @@ public: service.length() > 0 ? service.c_str() : 0, &hints, &list); if (status == 0) { - struct addrinfo* addr = list; - while (addr != 0) + for (struct addrinfo* addr = list; + addr != 0; addr = addr->ai_next) { resolved.push_back(SocketAddress(addr, name)); - addr = addr->ai_next; } freeaddrinfo(list);