[BUG] check for global.maxconn before doing accept()

If the accept() is done before checking for global.maxconn, we can
accept too many connections and encounter a lack of file descriptors
when trying to connect to the server. This is the cause of the
"cannot get a server socket" message  encountered in debug mode
during injections with low timeouts.
This commit is contained in:
Willy Tarreau 2009-03-21 22:43:12 +01:00
parent 06bea94266
commit b00f9c456c
2 changed files with 2 additions and 2 deletions

View File

@ -76,7 +76,7 @@ int event_accept(int fd) {
max_accept = max;
}
while (p->feconn < p->maxconn && max_accept--) {
while (p->feconn < p->maxconn && actconn < global.maxconn && max_accept--) {
struct sockaddr_storage addr;
socklen_t laddr = sizeof(addr);

View File

@ -368,7 +368,7 @@ int uxst_event_accept(int fd) {
else
max_accept = -1;
while (max_accept--) {
while (actconn < global.maxconn && max_accept--) {
struct sockaddr_storage addr;
socklen_t laddr = sizeof(addr);