]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Check that new listener connection is actually listening
authorrl1987 <rl1987@sdf.lonestar.org>
Mon, 3 Dec 2018 12:28:32 +0000 (14:28 +0200)
committerrl1987 <rl1987@sdf.lonestar.org>
Mon, 3 Dec 2018 12:28:32 +0000 (14:28 +0200)
src/core/mainloop/connection.c

index eaad45c81a55faa6e67a9530bc8f5776a8dcf46a..66a8b5147fe51589a6aebbf7a3a91400aee2b460 100644 (file)
@@ -1460,6 +1460,19 @@ connection_listener_new(const struct sockaddr *listensockaddr,
                tor_socket_strerror(tor_socket_errno(s)));
       goto err;
     }
+
+#ifndef __APPLE__
+    int value;
+    socklen_t len = sizeof(value);
+
+    if (!getsockopt(s, SOL_SOCKET, SO_ACCEPTCONN, &value, &len)) {
+      if (value == 0) {
+        log_err(LD_NET, "Could not listen on %s - "
+                        "getsockopt(.,SO_ACCEPTCONN,.) yields 0.", address);
+        goto err;
+      }
+    }
+#endif /* __APPLE__ */
 #endif /* defined(HAVE_SYS_UN_H) */
   } else {
     log_err(LD_BUG, "Got unexpected address family %d.",