Commit Diff


commit - d2d812174872d70ade77fe282a8766b875f75cc4
commit + e4189e65e31ef83e3854eb33867cc6853505542a
blob - 81d41bc7f70b8f7391307e1e3a5611d40d9ed5b2
blob + 92eff740036ffb9990b4ac7468800187fc60dda9
--- lstun.c
+++ lstun.c
@@ -309,14 +309,6 @@ bind_socket(void)
 		    res->ai_protocol);
 		if (socks[nsock] == -1) {
 			cause = "socket";
-			continue;
-		}
-
-		if (bind(socks[nsock], res->ai_addr, res->ai_addrlen) == -1) {
-			cause = "bind";
-			saved_errno = errno;
-			close(socks[nsock]);
-			errno = saved_errno;
 			continue;
 		}
 
@@ -330,6 +322,14 @@ bind_socket(void)
 		    sizeof(v)) == -1)
 			fatal("setsockopt(SO_REUSEPORT)");
 
+		if (bind(socks[nsock], res->ai_addr, res->ai_addrlen) == -1) {
+			cause = "bind";
+			saved_errno = errno;
+			close(socks[nsock]);
+			errno = saved_errno;
+			continue;
+		}
+
 		listen(socks[nsock], 5);
 
 		nsock++;