diff --git a/CHANGES b/CHANGES
index 9bf77436d311827040f791b320bc7733b04010d2..ce827de5272b9adaf6c895461ee3d12cafe846e1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.18 Engineering
+	Fixed slapd incorrectly applying writetimeout when not set (ITS#6220)
 
 OpenLDAP 2.4.17 Release (2009/07/13)
 	Fixed liblber to use ber_strnlen (ITS#6080)
diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c
index 05e8122c62cdcfa6110bb61fe61b0e9f959de708..897a50c3bc8a1138d12e9f8024b92854f5c0b5e0 100644
--- a/servers/slapd/connection.c
+++ b/servers/slapd/connection.c
@@ -249,7 +249,7 @@ int connections_timeout_idle(time_t now)
 			i++;
 			continue;
 		}
-		if ( c->c_writewaiter ) {
+		if ( c->c_writewaiter && global_writetimeout ) {
 			writers = 1;
 			if( difftime( c->c_activitytime+global_writetimeout, now) < 0 ) {
 				/* close it */
@@ -260,7 +260,7 @@ int connections_timeout_idle(time_t now)
 		}
 	}
 	connection_done( c );
-	if ( !writers )
+	if ( old && !writers )
 		slapd_clr_writetime( old );
 
 	return i;