]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
IO: Fix the previous bugfix
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Tue, 3 Nov 2015 10:27:27 +0000 (11:27 +0100)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Tue, 3 Nov 2015 10:27:27 +0000 (11:27 +0100)
I should check it after making some trivial changes. The original patch
from Alexander has it right.

sysdep/unix/io.c

index 726f1e49e2e0bf573c990d6791da99bfc6c333c5..b636e7997ea2288361919414d800976a7b0f8c7b 100644 (file)
@@ -1309,16 +1309,6 @@ sk_passive_connected(sock *s, int type)
     return 0;
   }
 
-  if (fd >= FD_SETSIZE)
-  {
-    /* FIXME: Call err_hook instead ? */
-    log(L_ERR "SOCK: Incoming connection from %I%J (port %d) %s",
-       t->daddr, ipa_is_link_local(t->daddr) ? t->iface : NULL,
-       t->dport, "rejected due to FD_SETSIZE limit");
-    close(fd);
-    return 1;
-  }
-
   sock *t = sk_new(s->pool);
   t->type = type;
   t->fd = fd;
@@ -1338,6 +1328,18 @@ sk_passive_connected(sock *s, int type)
       log(L_WARN "SOCK: Cannot get remote IP address for TCP<");
   }
 
+  if (fd >= FD_SETSIZE)
+  {
+    /* FIXME: Call err_hook instead ? */
+    log(L_ERR "SOCK: Incoming connection from %I%J (port %d) %s",
+       t->daddr, ipa_is_link_local(t->daddr) ? t->iface : NULL,
+       t->dport, "rejected due to FD_SETSIZE limit");
+    close(fd);
+    t->fd = -1;
+    rfree(t);
+    return 1;
+  }
+
   if (sk_setup(t) < 0)
   {
     /* FIXME: Call err_hook instead ? */