From 75205ab3995546d54288fcaa1a1fa8e88d9c4526 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Wed, 08 Jul 2026 16:10:29 +0000
Subject: [PATCH] [#697] Fix global idle-time-limit having no effect on client connections (#684)

---
 opendj-server-legacy/src/test/java/org/opends/server/core/IdleTimeLimitTestCase.java |   17 +++++++++++++----
 opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java     |    4 ++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
index 1f58479..ec71a15 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
@@ -13,6 +13,7 @@
  *
  * Copyright 2006-2010 Sun Microsystems, Inc.
  * Portions Copyright 2011-2016 ForgeRock AS.
+ * Portions Copyright 2026 3A Systems, LLC
  */
 package org.opends.server.core;
 
@@ -212,6 +213,9 @@
     core.disabledPrivileges = convert(globalConfig.getDisabledPrivilege());
     core.returnBindErrorMessages = globalConfig.isReturnBindErrorMessages();
     core.idleTimeLimit = globalConfig.getIdleTimeLimit();
+    // New client connections snapshot the limit from DirectoryServer at accept
+    // time (see ClientConnection), so the global value must be pushed there too.
+    DirectoryServer.setIdleTimeLimit(globalConfig.getIdleTimeLimit());
     core.saveConfigOnSuccessfulStartup = globalConfig.isSaveConfigOnSuccessfulStartup();
 
     core.useNanoTime= globalConfig.getEtimeResolution() == GlobalCfgDefn.EtimeResolution.NANOSECONDS;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/IdleTimeLimitTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/IdleTimeLimitTestCase.java
index 7d551ee..196f8ae 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/IdleTimeLimitTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/IdleTimeLimitTestCase.java
@@ -13,11 +13,13 @@
  *
  * Copyright 2008 Sun Microsystems, Inc.
  * Portions Copyright 2011-2016 ForgeRock AS.
+ * Portions Copyright 2026 3A Systems, LLC
  */
 package org.opends.server.core;
 
 import static org.testng.Assert.*;
 
+import java.io.EOFException;
 import java.io.IOException;
 
 import org.opends.server.TestCaseUtils;
@@ -51,7 +53,7 @@
    *
    * @throws  Exception  If an unexpected problem occurs.
    */
-  @Test(groups="slow")
+  @Test
   public void testServerWideAnonymousIdleTimeLimit()
          throws Exception
   {
@@ -78,7 +80,7 @@
    *
    * @throws  Exception  If an unexpected problem occurs.
    */
-  @Test(groups="slow")
+  @Test
   public void testServerWideAuthenticatedIdleTimeLimit()
          throws Exception
   {
@@ -123,7 +125,7 @@
    *
    * @throws  Exception  If an unexpected problem occurs.
    */
-  @Test(groups="slow")
+  @Test
   public void testUserSpecificIdleTimeLimit()
          throws Exception
   {
@@ -156,6 +158,13 @@
     ExtendedResponseProtocolOp extendedResponse = conn.readMessage().getExtendedResponseProtocolOp();
     assertEquals(extendedResponse.getOID(), LDAPConstants.OID_NOTICE_OF_DISCONNECTION);
 
-    assertNull(conn.readMessage());
+    try
+    {
+      fail("Expected the server to close the connection, but read " + conn.readMessage());
+    }
+    catch (EOFException expected)
+    {
+      // The server closed the connection after the notice of disconnection.
+    }
   }
 }

--
Gitblit v1.10.0