diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c
index 62faaf6d09722ecf4e38f176afb24cb1792d6114..b45938e380ba430b90061c8a225e891170df5bcb 100644
--- a/src/sbbs3/load_cfg.c
+++ b/src/sbbs3/load_cfg.c
@@ -349,12 +349,14 @@ void prep_cfg(scfg_t* cfg)
 void free_cfg(scfg_t* cfg)
 {
 #if defined(SBBS) && defined(USE_CRYPTLIB)
-	lock_ssl_cert();
-	if (cfg->tls_certificate != -1 && cfg->prepped) {
-		cryptDestroyContext(cfg->tls_certificate);
-		cfg->tls_certificate = -1;
+	if(cfg->prepped) {
+		lock_ssl_cert();
+		if (cfg->tls_certificate != -1 && cfg->prepped) {
+			cryptDestroyContext(cfg->tls_certificate);
+			cfg->tls_certificate = -1;
+		}
+		unlock_ssl_cert();
 	}
-	unlock_ssl_cert();
 #endif
 	free_node_cfg(cfg);
 	free_main_cfg(cfg);