diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c
index 93ab4ae0c64f63d398f4405066f78adccad16795..bd9fdcdc44391bac6e8c37efa59dad6682108e88 100644
--- a/libraries/libldap/tls_m.c
+++ b/libraries/libldap/tls_m.c
@@ -61,6 +61,8 @@ static const PRIOMethods tlsm_PR_methods;
 
 extern tls_impl ldap_int_tls_impl;
 
+static int tslm_did_init;
+
 #ifdef LDAP_R_COMPILE
 
 static void
@@ -81,6 +83,8 @@ tlsm_init( void )
 	tlsm_layer_id = PR_GetUniqueIdentity("OpenLDAP");
 
 	if ( !NSS_IsInitialized() ) {
+		tlsm_did_init = 1;
+
 		NSS_NoDB_Init("");
 
 		NSS_SetDomesticPolicy();
@@ -97,7 +101,12 @@ tlsm_init( void )
 static void
 tlsm_destroy( void )
 {
-	NSS_Shutdown();
+	/* Only if we did the actual initialization */
+	if ( tlsm_did_init ) {
+		tlsm_did_init = 0;
+
+		NSS_Shutdown();
+	}
 
 	PR_Cleanup();
 }