diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2007-01-29 15:51:18 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2007-01-29 15:51:18 +0000 |
commit | 1580c701aedeadaa2c864f81b96bb38fc5461b31 (patch) | |
tree | e6e00fd7aaf1a43643b6b9454d1137279758efbe /syslogd.c | |
parent | 3eb19c02d792c8511ab9e9c9087093ccc872c304 (diff) | |
download | rsyslog-1580c701aedeadaa2c864f81b96bb38fc5461b31.tar.gz rsyslog-1580c701aedeadaa2c864f81b96bb38fc5461b31.tar.xz rsyslog-1580c701aedeadaa2c864f81b96bb38fc5461b31.zip |
fixed too-low listen backlog parameter
Diffstat (limited to 'syslogd.c')
-rw-r--r-- | syslogd.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -1173,7 +1173,7 @@ static int create_tcp_socket(void) fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) { - logerror("syslog: TCP: Unknown protocol, suspending tcp inet service."); + logerror("syslog: TCP: could not create socket, suspending tcp inet service."); return fd; } @@ -1214,11 +1214,19 @@ static int create_tcp_socket(void) close(fd); return -1; } - - if(listen(fd, 5) < 0) { - logerror("listen, suspending tcp inet"); - close(fd); - return -1; + if(listen(fd, TCPSESS_MAX / 10 + 5) < 0) { + /* If the listen fails, it most probably fails because we ask + * for a too-large backlog. So in this case we first set back + * to a fixed, reasonable, limit that should work. Only if + * that fails, too, we give up. + */ + logerrorInt("listen with a backlog of %d failed - retrying with default of 32.", + TCPSESS_MAX / 10 + 5); + if(listen(fd, 32) < 0) { + logerror("listen, suspending tcp inet"); + close(fd); + return -1; + } } sockTCPLstn = fd; |