]> git.meshlink.io Git - catta/blobdiff - src/iface-windows.c
Fix compilation error caused by ACX_THREAD
[catta] / src / iface-windows.c
index 9a57f7c2b7f8eda2268e7b740abb0fff17e3e841..7be73f07d97631dcbce958fce70a00a0fba60a32 100644 (file)
 #include <stdlib.h> // wcstombs
 #include <catta/malloc.h>
 #include <catta/log.h>
+#include <ws2tcpip.h>
 #include <iphlpapi.h>
 #include <assert.h>
+#include "compat/windows/wincompat.h"
 #include "hashmap.h"
 #include "util.h"   // catta_format_mac_address
 #include "fdutil.h" // catta_set_nonblock
@@ -471,8 +473,12 @@ int catta_interface_monitor_init_osdep(CattaInterfaceMonitor *m)
         catta_log_error("pipe() in catta_interface_monitor_init_osdep failed");
         return -1;
     }
-    catta_set_nonblock(m->osdep.pipefd[0]);
-    catta_set_nonblock(m->osdep.pipefd[1]);
+    if(catta_set_nonblock(m->osdep.pipefd[0]) < 0 ||
+       catta_set_nonblock(m->osdep.pipefd[1]) < 0)
+    {
+        catta_log_error(__FILE__": catta_set_nonblock failed: %s", errnostrsocket());
+        goto fail;
+    }
 
     m->osdep.icnhandle = NULL;
     m->osdep.acnhandle = NULL;
@@ -485,7 +491,7 @@ int catta_interface_monitor_init_osdep(CattaInterfaceMonitor *m)
                                                     m);
     if(!m->osdep.watch) {
         catta_log_error(__FILE__": Failed to create watch.");
-        return -1;
+        goto fail;
     }
 
     // request async notification on interface changes
@@ -505,6 +511,11 @@ int catta_interface_monitor_init_osdep(CattaInterfaceMonitor *m)
         catta_log_error("NotifyUnicastIpAddressChange failed: %u", (unsigned int)r);
 
     return 0;
+
+fail:
+    closesocket(m->osdep.pipefd[0]);
+    closesocket(m->osdep.pipefd[1]);
+    return -1;
 }
 
 void catta_interface_monitor_free_osdep(CattaInterfaceMonitor *m)