Aggiunto esempio di uso di {{{TCP_INFO}}}
[gapil.git] / listati / is_closing.c
diff --git a/listati/is_closing.c b/listati/is_closing.c
new file mode 100644 (file)
index 0000000..d0eafbd
--- /dev/null
@@ -0,0 +1,17 @@
+int is_closing(int sock) 
+{
+    int err;
+    struct tcp_info info;
+    socklen_t len = sizeof(info);
+    if (getsockopt(sock, SOL_TCP, TCP_INFO, &info, &len) != -1) {
+       if (info.tcpi_state == TCP_CLOSE ||
+           info.tcpi_state == TCP_CLOSE_WAIT ||
+           info.tcpi_state == TCP_CLOSING) {
+           return 1;
+       } else {
+           return 0;
+       }
+    } else {
+       return errno;
+    }
+}