Free everything allocated in silc_server_free.
authorPekka Riikonen <priikone@silcnet.org>
Sun, 17 Mar 2002 17:29:11 +0000 (17:29 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 17 Mar 2002 17:29:11 +0000 (17:29 +0000)
CHANGES
apps/silcd/server.c
doc/draft-riikonen-silc-spec-05.nroff

diff --git a/CHANGES b/CHANGES
index aaa98c62a0361b6a9e9fccab60bd84b166a8112d..6a0c9dbe166fdfab0d4bf5984a6a896e4b4da895 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added the deleting of server's own ID cache entry to the
+         silc_server_free function.  Free also everything else that
+         has been allocated in silc_server_init.  The affected file 
+         is silcd/server.c.
+
 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Added functions silc_parse_version_string, silc_version_to_num,
index 4dc47c92ae196841f3ce80228cb22d57bc8e4688..6a5ec74374397cc799b05da74ee22675a4efda2f 100644 (file)
@@ -75,17 +75,7 @@ void silc_server_free(SilcServer server)
   if (server) {
 #ifdef SILC_SIM
     SilcSim sim;
-#endif
-
-    silc_free(server->local_list);
-    silc_free(server->global_list);
-    if (server->rng)
-      silc_rng_free(server->rng);
-
-    if (server->pkcs)
-      silc_pkcs_free(server->pkcs);
 
-#ifdef SILC_SIM
     while ((sim = silc_dlist_get(server->sim)) != SILC_LIST_END) {
       silc_dlist_del(server->sim, sim);
       silc_sim_free(sim);
@@ -93,9 +83,23 @@ void silc_server_free(SilcServer server)
     silc_dlist_uninit(server->sim);
 #endif
 
+    if (server->rng)
+      silc_rng_free(server->rng);
+    if (server->pkcs)
+      silc_pkcs_free(server->pkcs);
     if (server->pending_commands)
       silc_dlist_uninit(server->pending_commands);
+    if (server->id_entry)
+      silc_idlist_del_server(server->local_list, server->id_entry);
+
+    silc_idcache_free(server->local_list->clients);
+    silc_idcache_free(server->local_list->servers);
+    silc_idcache_free(server->local_list->channels);
+    silc_idcache_free(server->global_list->clients);
+    silc_idcache_free(server->global_list->servers);
+    silc_idcache_free(server->global_list->channels);
 
+    silc_free(server->sockets);
     silc_free(server);
   }
 }
@@ -231,8 +235,7 @@ int silc_server_init(SilcServer server)
        For now, NULL is sent as router. This allocates new entry to
        the ID list. */
     id_entry =
-      silc_idlist_add_server(server->local_list,
-                            server->config->server_info->server_name,
+      silc_idlist_add_server(server->local_list, strdup(server->server_name),
                             server->server_type, server->id, NULL, NULL);
     if (!id_entry) {
       SILC_LOG_ERROR(("Could not add ourselves to cache"));
index 682e215afd9970890ec0910d34c57b43094b577b..71f67d6f733e477cc53c923b45aa0241c402d72f 100644 (file)
@@ -1417,7 +1417,7 @@ The version strings are of the following format:
 
 .in 6
 protocol version = <major>.<minor>
-software version = <major>[.<minor>[.<build>]]
+software version = <major>[.<minor>[.<build or vendor string>]]
 .in 3
 
 Protocol version MAY provide both major and minor version.  Currently
@@ -1431,10 +1431,12 @@ Software version MAY provide major, minor and build version.  The
 software version MAY be freely set and accepted.
 
 
-Thus, the version string could be, for example:
+Thus, the version strings could be, for example:
 
 .in 6
 SILC-1.0-1.2
+SILC-1.1-2.0.2
+SILC-1.0-1.0.VendorXYZ
 .in 3