Blob Blame History Raw
From f37e15e9134ff22d03c4997fd1c76754b67d3539 Mon Sep 17 00:00:00 2001
From: Alexey Tikhonov <atikhono@redhat.com>
Date: Tue, 19 Jul 2022 14:28:35 +0200
Subject: [PATCH] RESPONDER: fixed condition in responder_idle_handler()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Man page says about `responder_idle_timeout` the following:
```
number of seconds that an SSSD responder process can be up without being used.
```
Idle timer fires every responder_idle_timeout/2 seconds and checks if
current_time > (last_request_time + timeout).
In a trivial case - no additional requests after initial one / startup -
condition will became 'true' only when timer fires for a 3rd time, i.e.
after 3*(timeout/2) seconds. This contradicts man page statement.

This patch changes condition to '>=' so that responder would be terminated
in 2*(timeout/2) seconds.

Reviewed-by: Alejandro Lopez <allopez@redhat.com>
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
(cherry picked from commit 473752e261d8d166b16f95fe4ddc8d320ae0faf4)
---
 src/responder/common/responder_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
index fb2a31bb0..4c6445311 100644
--- a/src/responder/common/responder_common.c
+++ b/src/responder/common/responder_common.c
@@ -374,7 +374,7 @@ static void responder_idle_handler(struct tevent_context *ev,
         goto end;
     }
 
-    if ((now - rctx->last_request_time) > rctx->idle_timeout) {
+    if ((now - rctx->last_request_time) >= rctx->idle_timeout) {
         /* This responder is idle. Terminate it */
         DEBUG(SSSDBG_TRACE_INTERNAL,
               "Terminating idle responder [%p]\n", rctx);
-- 
2.37.3