Fixed detaching bugs, channel key distribution after detach,
[silc.git] / apps / silcd / serverconfig.c
index 0bd9ab57861f6b2acc6dc33489b0c366e2ed1480..73a38bfde43bba4a89a656b8cd95d75622496d76 100644 (file)
@@ -1250,11 +1250,11 @@ SilcServerConfig silc_server_config_alloc(const char *filename)
 
   /* alloc a config object */
   config_new = silc_calloc(1, sizeof(*config_new));
-  config_new->refcount = 1;
   if (!config_new)
     return NULL;
 
   /* general config defaults */
+  config_new->refcount = 1;
   config_new->logging_timestamp = TRUE;
 
   /* obtain a config file object */
@@ -1540,6 +1540,7 @@ bool silc_server_config_register_ciphers(SilcServer server)
        silc_free(alg_name);
       } else {
        SILC_LOG_ERROR(("Error configuring ciphers"));
+        silc_sim_free(sim);
        silc_server_stop(server);
        exit(1);
       }
@@ -1623,6 +1624,7 @@ bool silc_server_config_register_hashfuncs(SilcServer server)
        silc_dlist_add(server->sim, sim);
       } else {
        SILC_LOG_ERROR(("Error configuring hash functions"));
+        silc_sim_free(sim);
        silc_server_stop(server);
        exit(1);
       }