From 8786295cf71950ae2d7bd9e88c8c839f1ca89be8 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Mon, 6 Jul 2009 21:15:01 +0000
Subject: [PATCH] More for ITS#5836 writetimeout wasn't taking effect if
 idletimeout wasn't also set. Also, timeout check would keep getting pushed
 back if multiple writers were waiting.

---
 servers/slapd/daemon.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c
index 2350fdcd9e..8e4e853f2c 100644
--- a/servers/slapd/daemon.c
+++ b/servers/slapd/daemon.c
@@ -957,7 +957,7 @@ slapd_set_write( ber_socket_t s, int wake )
 		SLAP_SOCK_SET_WRITE( s );
 		slap_daemon.sd_nwriters++;
 	}
-	if (( wake & 2 ) && global_writetimeout ) {
+	if (( wake & 2 ) && global_writetimeout && !chk_writetime ) {
 		chk_writetime = slap_get_time();
 	}
 
@@ -2177,7 +2177,7 @@ slapd_daemon_task(
 			 */
 			if ( chk_writetime ) {
 				tv.tv_sec = global_writetimeout;
-				tv.tv_usec = global_writetimeout;
+				tv.tv_usec = 0;
 				if ( difftime( chk_writetime, now ) < 0 )
 					check = 2;
 			} else {
@@ -2245,7 +2245,7 @@ slapd_daemon_task(
 
 		nfds = SLAP_EVENT_MAX;
 
-		if ( global_idletimeout && slap_daemon.sd_nactives ) at = 1;
+		if (( chk_writetime || global_idletimeout ) && slap_daemon.sd_nactives ) at = 1;
 
 		ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex );
 
-- 
GitLab