aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-04-01 18:51:15 +0000
committerUlrich Drepper <drepper@redhat.com>2006-04-01 18:51:15 +0000
commit9388dcbb84dd616b20823ac46c8630b8c2845a82 (patch)
treed97ec2fd5109de9bb8f367b9e1b42178e3d081b8
parent1329b60176b59b185ad71fc87a86dd0cf9cff21b (diff)
downloadglibc-9388dcbb84dd616b20823ac46c8630b8c2845a82.zip
glibc-9388dcbb84dd616b20823ac46c8630b8c2845a82.tar.gz
glibc-9388dcbb84dd616b20823ac46c8630b8c2845a82.tar.bz2
[BZ #2498]
2006-04-01 Ulrich Drepper <drepper@redhat.com> [BZ #2498] * nscd/connections.c (main_loop_poll): If the connection cannot be accepted because of user-imposed limits close the descriptor.
-rw-r--r--ChangeLog6
-rw-r--r--nscd/connections.c28
2 files changed, 23 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 926603a..0601dca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-04-01 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #2498]
+ * nscd/connections.c (main_loop_poll): If the connection cannot be
+ accepted because of user-imposed limits close the descriptor.
+
2006-03-31 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/Versions: Export sync_file_range with
diff --git a/nscd/connections.c b/nscd/connections.c
index 802b7c0..d975b18 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -1556,18 +1556,24 @@ main_loop_poll (void)
/* We have a new incoming connection. Accept the connection. */
int fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
- /* use the descriptor if we have not reached the limit. */
- if (fd >= 0 && firstfree < nconns)
+ /* Use the descriptor if we have not reached the limit. */
+ if (fd >= 0)
{
- conns[firstfree].fd = fd;
- conns[firstfree].events = POLLRDNORM;
- starttime[firstfree] = now;
- if (firstfree >= nused)
- nused = firstfree + 1;
-
- do
- ++firstfree;
- while (firstfree < nused && conns[firstfree].fd != -1);
+ if (firstfree < nconns)
+ {
+ conns[firstfree].fd = fd;
+ conns[firstfree].events = POLLRDNORM;
+ starttime[firstfree] = now;
+ if (firstfree >= nused)
+ nused = firstfree + 1;
+
+ do
+ ++firstfree;
+ while (firstfree < nused && conns[firstfree].fd != -1);
+ }
+ else
+ /* We cannot use the connection so close it. */
+ close (fd);
}
--n;