]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Socket.hh
better string encoding in packets
[chaz/yoink] / src / Moof / Socket.hh
index f1604663b038c37ff408061ca50db4d914ccd38a..9690a2e892df42cdc59257ec270083d9f8cb98d3 100644 (file)
@@ -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);
@@ -205,6 +213,7 @@ public:
                else
                {
                        Mf::logWarning(gai_strerror(status));
+                       return -1;
                }
 
                return 0;
This page took 0.017794 seconds and 4 git commands to generate.