ra: handle socket fail creation
[project/odhcp6c.git] / src / ra.c
index 299762e57bcb0247fe88bf1baa6f755c84f37962..397608a246e0a26fa466afb1b3856d1ea10e6a13 100644 (file)
--- a/src/ra.c
+++ b/src/ra.c
@@ -301,11 +301,13 @@ bool ra_process(void)
                socklen_t alen = sizeof(addr);
                int sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
 
-               if (!connect(sock, (struct sockaddr*)&addr, sizeof(addr)) &&
-                               !getsockname(sock, (struct sockaddr*)&addr, &alen))
-                       lladdr = addr.sin6_addr;
+               if (sock >= 0) {
+                       if (!connect(sock, (struct sockaddr*)&addr, sizeof(addr)) &&
+                                       !getsockname(sock, (struct sockaddr*)&addr, &alen))
+                               lladdr = addr.sin6_addr;
 
-               close(sock);
+                       close(sock);
+               }
        }
 
        while (true) {