]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4805. [bug] TCP4Active and TCP6Active weren't being updated
authorMark Andrews <marka@isc.org>
Wed, 1 Nov 2017 23:42:42 +0000 (10:42 +1100)
committerMark Andrews <marka@isc.org>
Wed, 1 Nov 2017 23:42:42 +0000 (10:42 +1100)
                        correctly. [RT #46454]

CHANGES
lib/isc/unix/socket.c

diff --git a/CHANGES b/CHANGES
index aa331726a665d6acab74ba04f7b6b3487142b8ee..5430b32b2939093163ed77711d41884433a8cb16 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4805.  [bug]           TCP4Active and TCP6Active weren't being updated
+                       correctly. [RT #46454]
+
 4804.  [port]          win32: access() does not work on directories as
                        required by POSIX.  Supply a alternative in
                        isc_file_isdirwritable. [RT #46394]
index 5062c3858421ca71b97af98767c2408e6f7e5762..2bf3e08a0fc373f4d41083d9d499dee412f8c46c 100644 (file)
@@ -3724,6 +3724,12 @@ internal_accept(isc_task_t *me, isc_event_t *ev) {
                 */
                dev->address = NEWCONNSOCK(dev)->peer_address;
 
+               if (NEWCONNSOCK(dev)->active == 0) {
+                       inc_stats(manager->stats,
+                                 NEWCONNSOCK(dev)->statsindex[STATID_ACTIVE]);
+                       NEWCONNSOCK(dev)->active = 1;
+               }
+
                LOCK(&manager->fdlock[lockid]);
                manager->fds[fd] = NEWCONNSOCK(dev);
                manager->fdstate[fd] = MANAGED;
@@ -3749,7 +3755,6 @@ internal_accept(isc_task_t *me, isc_event_t *ev) {
                UNLOCK(&manager->lock);
 
                inc_stats(manager->stats, sock->statsindex[STATID_ACCEPT]);
-               inc_stats(manager->stats, sock->statsindex[STATID_ACTIVE]);
        } else {
                inc_stats(manager->stats, sock->statsindex[STATID_ACCEPTFAIL]);
                NEWCONNSOCK(dev)->references--;