- Check that we got a valid socket before trying to bind
authorCameron Gutman <aicommander@gmail.com>
Thu, 27 Aug 2009 21:31:49 +0000 (21:31 +0000)
committerCameron Gutman <aicommander@gmail.com>
Thu, 27 Aug 2009 21:31:49 +0000 (21:31 +0000)
svn path=/trunk/; revision=42958

reactos/base/services/dhcp/adapter.c

index 4de0d5d..cca45f4 100644 (file)
@@ -299,13 +299,18 @@ BOOLEAN AdapterDiscover() {
                     Adapter->DhclientInfo.rfdesc =
                     Adapter->DhclientInfo.wfdesc =
                     socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
-                Adapter->ListenAddr.sin_family = AF_INET;
-                Adapter->ListenAddr.sin_port = htons(LOCAL_PORT);
-                Adapter->BindStatus =
-                    (bind( Adapter->DhclientInfo.rfdesc,
-                           (struct sockaddr *)&Adapter->ListenAddr,
-                           sizeof(Adapter->ListenAddr) ) == 0) ?
-                    0 : WSAGetLastError();
+
+                if (DhcpSocket != INVALID_SOCKET) {
+                    Adapter->ListenAddr.sin_family = AF_INET;
+                    Adapter->ListenAddr.sin_port = htons(LOCAL_PORT);
+                    Adapter->BindStatus =
+                        (bind( Adapter->DhclientInfo.rfdesc,
+                               (struct sockaddr *)&Adapter->ListenAddr,
+                               sizeof(Adapter->ListenAddr) ) == 0) ?
+                        0 : WSAGetLastError();
+                } else {
+                    error("socket() failed: %d\n", WSAGetLastError());
+                }
             } else {
                 Adapter->DhclientInfo.rfdesc =
                     Adapter->DhclientInfo.wfdesc = DhcpSocket;