diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2015-11-25 14:24:35 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2015-11-25 14:24:35 +0100 |
commit | 04ae8ddaa15b72c265dc7cf038b733d235198754 (patch) | |
tree | eadc4dfee9a0f0eba3446538129608dffbde4625 /sysdep/unix/io.c | |
parent | d44e686e9bcae5850115c0e1adfe24523dce61ee (diff) | |
parent | 33b4f40acce02c90b4b7766c5c94ebf2d22765c6 (diff) |
Merge branch 'master' into int-new
Diffstat (limited to 'sysdep/unix/io.c')
-rw-r--r-- | sysdep/unix/io.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index 0724667d..b636e799 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -1328,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 ? */ @@ -1404,6 +1416,9 @@ sk_open(sock *s) if (fd < 0) ERR("socket"); + if (fd >= FD_SETSIZE) + ERR2("FD_SETSIZE limit reached"); + s->af = af; s->fd = fd; |