diff --git a/CHANGES b/CHANGES
index 4f17948371d9d952ff2857536efddd745712b97c..9f28924096ba0fcc284c9ed91bd8d0629dab621a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -19,6 +19,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed slapo-ppolicy don't update opattrs on consumers (ITS#6608)
 	Fixed slapo-sssvlv initialization (ITS#6649)
 	Fixed slapo-syncprov to send error if consumer is newer (ITS#6606)
+	Fixed contrib/nssov to only close socket on shutdown (ITS#6676)
 	Documentation
 		admin24 guide typo fixes (ITS#6609)
 
diff --git a/contrib/slapd-modules/nssov/nssov.c b/contrib/slapd-modules/nssov/nssov.c
index b5ffeb64aa13ebce56d6f29d3dc9062e083e0efb..0687e98d0741e6d8d399fe5763e50973300a3690 100644
--- a/contrib/slapd-modules/nssov/nssov.c
+++ b/contrib/slapd-modules/nssov/nssov.c
@@ -879,18 +879,20 @@ nssov_db_close(
 	slap_overinst *on = (slap_overinst *)be->bd_info;
 	nssov_info *ni = on->on_bi.bi_private;
 
-	/* close socket if it's still in use */
-	if (ni->ni_socket >= 0);
-	{
-		if (close(ni->ni_socket))
-			Debug( LDAP_DEBUG_ANY,"problem closing server socket (ignored): %s",strerror(errno),0,0);
-		ni->ni_socket = -1;
-	}
-	/* remove existing named socket */
-	if (unlink(NSLCD_SOCKET)<0)
-	{
-		Debug( LDAP_DEBUG_TRACE,"unlink() of "NSLCD_SOCKET" failed (ignored): %s",
-			strerror(errno),0,0);
+	if ( slapMode & SLAP_SERVER_MODE ) {
+		/* close socket if it's still in use */
+		if (ni->ni_socket >= 0);
+		{
+			if (close(ni->ni_socket))
+				Debug( LDAP_DEBUG_ANY,"problem closing server socket (ignored): %s",strerror(errno),0,0);
+			ni->ni_socket = -1;
+		}
+		/* remove existing named socket */
+		if (unlink(NSLCD_SOCKET)<0)
+		{
+			Debug( LDAP_DEBUG_TRACE,"unlink() of "NSLCD_SOCKET" failed (ignored): %s",
+				strerror(errno),0,0);
+		}
 	}
 }