[BZ #2498]
authorUlrich Drepper <drepper@redhat.com>
Sat, 1 Apr 2006 18:51:15 +0000 (18:51 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 1 Apr 2006 18:51:15 +0000 (18:51 +0000)
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.

ChangeLog
nscd/connections.c

index 926603a3813075b207f990568730ed98e3362f12..0601dcac053118675eca7acaec81f70328c03c32 100644 (file)
--- 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
index 802b7c02d2a39d9612635bb0a54482d7bf635df2..d975b1818f9404189eade1464d940dd4bc868d62 100644 (file)
@@ -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;