From 0ac857fc0fc0be3b53ecdf1de30047d48adc4a8c Mon Sep 17 00:00:00 2001
From: Alex Schultz <aschultz@redhat.com>
Date: Sat, 31 Oct 2020 18:26:32 -0600
Subject: Change http ConnState actions between new and active

Currently it double counts connections because it's incrementing the
total for both the new and active states. Based on the comments, we
should only count new connections for the total count and perform the
timer stop actions when the connection has transitioned to an active
state.

Closes #8208

Signed-off-by: Alex Schultz <aschultz@redhat.com>
---
 pkg/api/server/idle/tracker.go | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'pkg')

diff --git a/pkg/api/server/idle/tracker.go b/pkg/api/server/idle/tracker.go
index 50e41b7bf..687ebd7d4 100644
--- a/pkg/api/server/idle/tracker.go
+++ b/pkg/api/server/idle/tracker.go
@@ -41,11 +41,12 @@ func (t *Tracker) ConnState(conn net.Conn, state http.ConnState) {
 
 	logrus.Debugf("IdleTracker %p:%v %dm+%dh/%dt connection(s)", conn, state, len(t.managed), t.hijacked, t.TotalConnections())
 	switch state {
-	case http.StateNew, http.StateActive:
+	case http.StateNew:
+		t.total++
+	case http.StateActive:
 		// stop the API timer when the server transitions any connection to an "active" state
 		t.managed[conn] = struct{}{}
 		t.timer.Stop()
-		t.total++
 	case http.StateHijacked:
 		// hijacked connections should call Close() when finished.
 		// Note: If a handler hijack's a connection and then doesn't Close() it,
-- 
cgit v1.2.3-54-g00ecf