Remove server from backup list when deleting it.
authorPekka Riikonen <priikone@silcnet.org>
Sun, 9 Jan 2005 13:30:08 +0000 (13:30 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 9 Jan 2005 13:30:08 +0000 (13:30 +0000)
CHANGES
apps/silcd/command.c
apps/silcd/packet_receive.c
apps/silcd/server_util.c

diff --git a/CHANGES b/CHANGES
index 7001bd5b9750199af8a5eea3f864f670bd15fc28..8bc93a326f0e3740adcf333d02d7e6c7b1e83cb7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
+
+       * Make sure server is removed from backup list when it is
+         deleted.  Affected files silcd/command.c, server.c,
+         server_util.c.
+
 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
 
        * Adopt configuration toolchain to current auto-tools.
index c52d7098d3e7e71c4af7ee2de40ee235b94c8f52..8e2acc19374d672af0a1489482c4a9007ac6566e 100644 (file)
@@ -5072,10 +5072,10 @@ SILC_SERVER_CMD_FUNC(close)
     SILC_GET32_MSB(port, tmp);
 
   server_entry = silc_idlist_find_server_by_conn(server->local_list,
-                                                name, port, FALSE, NULL);
+                                                name, port, TRUE, NULL);
   if (!server_entry)
     server_entry = silc_idlist_find_server_by_conn(server->global_list,
-                                                  name, port, FALSE, NULL);
+                                                  name, port, TRUE, NULL);
   if (!server_entry) {
     silc_server_command_send_status_reply(cmd, SILC_COMMAND_PRIV_CLOSE,
                                          SILC_STATUS_ERR_NO_SERVER_ID, 0);
@@ -5095,8 +5095,10 @@ SILC_SERVER_CMD_FUNC(close)
   /* Close the connection to the server */
   sock = (SilcSocketConnection)server_entry->connection;
 
-  if (server_entry->server_type == SILC_BACKUP_ROUTER)
+  if (server_entry->server_type == SILC_BACKUP_ROUTER) {
     server->backup_closed = TRUE;
+    silc_server_backup_del(server, server_entry);
+  }
 
   server->backup_noswitch = TRUE;
   if (server->router == server_entry) {
index a23d223fcb20d1f667205ca3fe995531b719fe91..1215e604b303f590e6343e8f54b7f8e76802418e 100644 (file)
@@ -2615,6 +2615,8 @@ SilcServerEntry silc_server_new_server(SilcServer server,
                                               server_id, TRUE, NULL);
   if (server_entry) {
     if (SILC_IS_LOCAL(server_entry)) {
+      SILC_LOG_ERROR(("Too many registrations from %s (%s)",
+                     sock->ip, sock->hostname));
       silc_server_disconnect_remote(server, sock,
                                    SILC_STATUS_ERR_OPERATION_ALLOWED,
                                    "Too many registrations");
@@ -2629,6 +2631,8 @@ SilcServerEntry silc_server_new_server(SilcServer server,
                                                 server_id, TRUE, NULL);
     if (server_entry) {
       if (SILC_IS_LOCAL(server_entry)) {
+        SILC_LOG_ERROR(("Too many registrations from %s (%s)",
+                       sock->ip, sock->hostname));
        silc_server_disconnect_remote(server, sock,
                                      SILC_STATUS_ERR_OPERATION_ALLOWED,
                                      "Too many registrations");
index fb1bbaae737f64bb3a45cec57846a9a4e4b010d6..d733f78a699695285914b27b01a2ca5f408b706a 100644 (file)
@@ -873,6 +873,7 @@ void silc_server_remove_servers_by_server(SilcServer server,
                                               TRUE);
 
        /* Remove the server */
+       silc_server_backup_del(server, server_entry);
        silc_idlist_del_server(server->local_list, server_entry);
 
        if (!silc_idcache_list_next(list, &id_cache))
@@ -900,6 +901,7 @@ void silc_server_remove_servers_by_server(SilcServer server,
                                               TRUE);
 
        /* Remove the server */
+       silc_server_backup_del(server, server_entry);
        silc_idlist_del_server(server->global_list, server_entry);
 
        if (!silc_idcache_list_next(list, &id_cache))