updates.
authorPekka Riikonen <priikone@silcnet.org>
Fri, 29 Mar 2002 08:46:35 +0000 (08:46 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Fri, 29 Mar 2002 08:46:35 +0000 (08:46 +0000)
apps/silcd/server.c
apps/silcd/serverconfig.c

index 32c2ac81de80153b9cf272b7032c3859dd59b399..579d85ba091b123fe430778e82d2533d5b4eb6ba 100644 (file)
@@ -359,6 +359,12 @@ bool silc_server_rehash(SilcServer server)
 
   SILC_LOG_INFO(("Rehashing server"));
 
+  /* Our old config is gone now. We'll unreference our reference made in
+     silc_server_init and then destroy it since we are destroying it
+     underneath the application (layer which called silc_server_init). */
+  silc_server_config_unref(&server->config_ref);
+  silc_server_config_destroy(server->config);
+
   /* Reset the logging system */
   silc_log_quick = TRUE;
   silc_log_flush_all();
@@ -370,18 +376,16 @@ bool silc_server_rehash(SilcServer server)
     return FALSE;
   }
 
-  /* Our old config is gone now. We'll unreference our reference made in
-     silc_server_init and then destroy it since we are destroying it
-     underneath the application (layer which called silc_server_init). */
-  silc_server_config_unref(&server->config_ref);
-  silc_server_config_destroy(server->config);
-
   /* Take new config context */
   server->config = newconfig;
   silc_server_config_ref(&server->config_ref, server->config, server->config);
 
   /* Fix the server_name field */
-  if (strcmp(server->server_name, newconfig->server_info->server_name)) {
+  if (!strcmp(server->server_name, newconfig->server_info->server_name)) {
+    /* We don't need any update */
+    silc_free(newconfig->server_info->server_name);
+    newconfig->server_info->server_name = NULL;
+  } else {
     silc_free(server->server_name);
     server->server_name = newconfig->server_info->server_name;
     newconfig->server_info->server_name = NULL;
index b4c264b34d9472bce2211e1dd1c81c73042352ac..0b31048af5093fcc86a32b7cb33f9196555426de 100644 (file)
@@ -884,6 +884,10 @@ SILC_CONFIG_CALLBACK(fetch_server)
       goto got_err;
     }
   }
+  else if (!strcmp(name, "versionid")) {
+    CONFIG_IS_DOUBLE(tmp->version);
+    tmp->version = strdup((char *) val);
+  }
   else if (!strcmp(name, "params")) {
     CONFIG_IS_DOUBLE(tmp->param);
     tmp->param = my_find_param(config, (char *) val, line);
@@ -902,6 +906,7 @@ SILC_CONFIG_CALLBACK(fetch_server)
 
  got_err:
   silc_free(tmp->host);
+  silc_free(tmp->version);
   CONFIG_FREE_AUTH(tmp);
   silc_free(tmp);
   config->tmp = NULL;
@@ -961,6 +966,10 @@ SILC_CONFIG_CALLBACK(fetch_router)
       goto got_err;
     }
   }
+  else if (!strcmp(name, "versionid")) {
+    CONFIG_IS_DOUBLE(tmp->version);
+    tmp->version = strdup((char *) val);
+  }
   else if (!strcmp(name, "params")) {
     CONFIG_IS_DOUBLE(tmp->param);
     tmp->param = my_find_param(config, (char *) val, line);
@@ -995,6 +1004,7 @@ SILC_CONFIG_CALLBACK(fetch_router)
 
  got_err:
   silc_free(tmp->host);
+  silc_free(tmp->version);
   silc_free(tmp->backup_replace_ip);
   CONFIG_FREE_AUTH(tmp);
   silc_free(tmp);
@@ -1134,6 +1144,7 @@ static const SilcConfigTable table_serverconn[] = {
   { "host",            SILC_CONFIG_ARG_STRE,   fetch_server,   NULL },
   { "passphrase",      SILC_CONFIG_ARG_STR,    fetch_server,   NULL },
   { "publickey",       SILC_CONFIG_ARG_STR,    fetch_server,   NULL },
+  { "versionid",       SILC_CONFIG_ARG_STR,    fetch_server,   NULL },
   { "params",          SILC_CONFIG_ARG_STR,    fetch_server,   NULL },
   { "backup",          SILC_CONFIG_ARG_TOGGLE, fetch_server,   NULL },
   { 0, 0, 0, 0 }
@@ -1144,6 +1155,7 @@ static const SilcConfigTable table_routerconn[] = {
   { "port",            SILC_CONFIG_ARG_INT,    fetch_router,   NULL },
   { "passphrase",      SILC_CONFIG_ARG_STR,    fetch_router,   NULL },
   { "publickey",       SILC_CONFIG_ARG_STR,    fetch_router,   NULL },
+  { "versionid",       SILC_CONFIG_ARG_STR,    fetch_router,   NULL },
   { "params",          SILC_CONFIG_ARG_STR,    fetch_router,   NULL },
   { "initiator",       SILC_CONFIG_ARG_TOGGLE, fetch_router,   NULL },
   { "backuphost",      SILC_CONFIG_ARG_STRE,   fetch_router,   NULL },
@@ -1298,11 +1310,7 @@ void silc_server_config_destroy(SilcServerConfig config)
 
   SILC_LOG_DEBUG(("Freeing config context"));
 
-  /* Destroy general config stuff */
   silc_free(config->module_path);
-  silc_free(config->param.version_protocol);
-  silc_free(config->param.version_software);
-  silc_free(config->param.version_software_vendor);
 
   /* Destroy Logging channels */
   if (config->logging_info)
@@ -1353,15 +1361,8 @@ void silc_server_config_destroy(SilcServerConfig config)
     silc_free(di->name);
     silc_free(di);
   }
-  SILC_SERVER_CONFIG_LIST_DESTROY(SilcServerConfigConnParams,
-                                  config->conn_params)
-    silc_free(di->name);
-    silc_free(di->version_protocol);
-    silc_free(di->version_software);
-    silc_free(di->version_software_vendor);
-    silc_free(di);
-  }
-  SILC_SERVER_CONFIG_LIST_DESTROY(SilcServerConfigClient, config->clients)
+  SILC_SERVER_CONFIG_LIST_DESTROY(SilcServerConfigClient,
+                                 config->clients)
     silc_free(di->host);
     CONFIG_FREE_AUTH(di);
     silc_free(di);
@@ -1381,12 +1382,14 @@ void silc_server_config_destroy(SilcServerConfig config)
   SILC_SERVER_CONFIG_LIST_DESTROY(SilcServerConfigServer,
                                  config->servers)
     silc_free(di->host);
+    silc_free(di->version);
     CONFIG_FREE_AUTH(di);
     silc_free(di);
   }
   SILC_SERVER_CONFIG_LIST_DESTROY(SilcServerConfigRouter,
                                  config->routers)
     silc_free(di->host);
+    silc_free(di->version);
     silc_free(di->backup_replace_ip);
     CONFIG_FREE_AUTH(di);
     silc_free(di);