diff options
author | Linus Nordberg <linus@nordu.net> | 2017-01-18 14:25:26 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2017-08-02 13:04:47 +0200 |
commit | 950306fca00af2ea68f21e7873a227694559cb95 (patch) | |
tree | e75d6932818e055e1c3aaf4a0b55c72907b4a2e5 | |
parent | 3c321320a634e294e22f7d7e638f2add632ade33 (diff) |
Use a listen(2) backlog of 128.
There's a chance that incoming (legitimate) connections arrive faster
than what it takes to spawn a new thread and get back to
listen(). Therefore we should ask the stack to queue at least one
entry, i.e. use a backlog value of at least 1. There's arguable also a
chance of more than two concurrent incoming connections, which would
make a case for a backlog value greater than one.
A reasonable high value seems to be 128, which also is what SOMAXCONN
is on many unix systems. In the choice between 1 and 128, an argument
against the higher value is that it may mask the potential problem of
spending a long time serving incoming connections.
Being reasonably confident that radsecproxy is efficient when it comes
to serving incoming connections, by handing them off to a newly
spawned thread, I think that 128 is a fine choice.
Closes RADSECPROXY-72.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | tcp.c | 2 | ||||
-rw-r--r-- | tls.c | 2 |
3 files changed, 5 insertions, 2 deletions
@@ -1,4 +1,7 @@ 2017-10-?? 1.6.9 + Misc: + - Use a listen(2) backlog of 128 (RADSECPROXY-72). + Bug fixes: - Completely reload CAs and CRLs with cacheExpiry (RADSECPROXY-50). - Tie Access-Request log lines to response log lines (RADSECPROXY-60). @@ -353,7 +353,7 @@ void *tcplistener(void *arg) { struct sockaddr_storage from; socklen_t fromlen = sizeof(from); - listen(*sp, 0); + listen(*sp, 128); for (;;) { s = accept(*sp, (struct sockaddr *)&from, &fromlen); @@ -467,7 +467,7 @@ void *tlslistener(void *arg) { struct sockaddr_storage from; socklen_t fromlen = sizeof(from); - listen(*sp, 0); + listen(*sp, 128); for (;;) { s = accept(*sp, (struct sockaddr *)&from, &fromlen); |