Added the checks for backup closing connection due to error
authorPekka Riikonen <priikone@silcnet.org>
Fri, 28 Nov 2003 17:22:01 +0000 (17:22 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Fri, 28 Nov 2003 17:22:01 +0000 (17:22 +0000)
(local or remote) and thus not allow the resuming to occur
in reconnect.

CHANGES
apps/silcd/packet_send.c
apps/silcd/server.c
apps/silcd/server_backup.c
apps/silcd/server_util.c

diff --git a/CHANGES b/CHANGES
index 50ac06526cdd9945e513036b32c9c02d3379f40f..3e545b2fd90f54647af841784f5459f9193ee318 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,10 +1,21 @@
+Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
+         is not defined.  They can now be safely used in if-statements
+         without braces.  Affected file lib/silcutil/silclog.h.
+
+       * Added the checks for backup closing connection due to error
+         (local or remote) and thus not allow the resuming to occur
+         in reconnect.  Affected files are silcd/packet_send.c
+         and server.c.
+
 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
 
        * Help file updates.  Affected files in irssi/src/docs/help/in/.
 
 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
 
-       * Fixed channel messages across cells. Affected file 
+       * Fixed channel messages across cells. Affected file
          silcd/packet_send.c
 
 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
index 8b4c08957157fb6f0fc0996c0700b9a555eddf77..454b6b5e9da060fb7cd06a0458b1e8080b2a07ff 100644 (file)
@@ -49,8 +49,17 @@ int silc_server_packet_send_real(SilcServer server,
                       sock->type == SILC_SOCKET_TYPE_SERVER ? "Server" :
                       "Router")));
 
-      if (sock->user_data)
+      if (sock->user_data) {
+       /* If backup then mark that resuming will not be allowed */
+       if (server->server_type == SILC_ROUTER && !server->backup_router &&
+           sock->type == SILC_SOCKET_TYPE_SERVER) {
+         SilcServerEntry server_entry = sock->user_data;
+         if (server_entry->server_type == SILC_BACKUP_ROUTER)
+           server->backup_closed = TRUE;
+       }
+
        silc_server_free_sock_user_data(server, sock, NULL);
+      }
       SILC_SET_DISCONNECTING(sock);
       silc_server_close_connection(server, sock);
       return ret;
@@ -776,8 +785,8 @@ silc_server_packet_relay_to_channel_encrypt(SilcServer server,
     }
 
     memcpy(iv, data + (data_len - iv_len - mac_len), iv_len);
-    silc_message_payload_encrypt(data, data_len - iv_len - mac_len, 
-                                 data_len - mac_len, iv, iv_len, 
+    silc_message_payload_encrypt(data, data_len - iv_len - mac_len,
+                                 data_len - mac_len, iv, iv_len,
                                  channel->channel_key, channel->hmac);
   }
 
index 4df005aa478bc84032f62983fa60a2760cb5bd94..09c89c67fd17801d8226e629c3cbfeecd5cf965b 100644 (file)
@@ -2289,8 +2289,17 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
                       sock->type == SILC_SOCKET_TYPE_SERVER ? "Server" :
                       "Router")));
 
-      if (sock->user_data)
+      if (sock->user_data) {
+       /* If backup then mark that resuming will not be allowed */
+       if (server->server_type == SILC_ROUTER && !server->backup_router &&
+           sock->type == SILC_SOCKET_TYPE_SERVER) {
+         SilcServerEntry server_entry = sock->user_data;
+         if (server_entry->server_type == SILC_BACKUP_ROUTER)
+           server->backup_closed = TRUE;
+       }
+
        silc_server_free_sock_user_data(server, sock, NULL);
+      }
       SILC_SET_DISCONNECTING(sock);
       silc_server_close_connection(server, sock);
     }
@@ -2311,8 +2320,17 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
                       sock->type == SILC_SOCKET_TYPE_SERVER ? "Server" :
                       "Router"), strerror(errno)));
 
-      if (sock->user_data)
+      if (sock->user_data) {
+       /* If backup then mark that resuming will not be allowed */
+       if (server->server_type == SILC_ROUTER && !server->backup_router &&
+           sock->type == SILC_SOCKET_TYPE_SERVER) {
+         SilcServerEntry server_entry = sock->user_data;
+         if (server_entry->server_type == SILC_BACKUP_ROUTER)
+           server->backup_closed = TRUE;
+       }
+
        silc_server_free_sock_user_data(server, sock, NULL);
+      }
       SILC_SET_DISCONNECTING(sock);
       silc_server_close_connection(server, sock);
     }
@@ -2337,7 +2355,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
     if (sock->user_data) {
       char tmp[128];
 
-      /* If backup disconnected then mark that resuming willl not be allowed */
+      /* If backup disconnected then mark that resuming will not be allowed */
       if (server->server_type == SILC_ROUTER && !server->backup_router &&
          sock->type == SILC_SOCKET_TYPE_SERVER && sock->user_data) {
        SilcServerEntry server_entry = sock->user_data;
@@ -2398,8 +2416,18 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
     if (SILC_PRIMARY_ROUTE(server) == sock && server->backup_router)
       server->backup_noswitch = TRUE;
 
-    if (sock->user_data)
+    if (sock->user_data) {
+      /* If we are router and backup errorred then mark that resuming
+        will not be allowed */
+      if (server->server_type == SILC_ROUTER && !server->backup_router &&
+         sock->type == SILC_SOCKET_TYPE_SERVER) {
+       SilcServerEntry server_entry = sock->user_data;
+       if (server_entry->server_type == SILC_BACKUP_ROUTER)
+         server->backup_closed = TRUE;
+      }
+
       silc_server_free_sock_user_data(server, sock, NULL);
+    }
     SILC_SET_DISCONNECTING(sock);
     silc_server_close_connection(server, sock);
   }
@@ -2621,7 +2649,7 @@ void silc_server_packet_parse_type(SilcServer server,
       /* Do not switch to backup in case of error */
       server->backup_noswitch = (status == SILC_STATUS_OK ? FALSE : TRUE);
 
-      /* If backup disconnected then mark that resuming willl not be allowed */
+      /* If backup disconnected then mark that resuming will not be allowed */
       if (server->server_type == SILC_ROUTER && !server->backup_router &&
          sock->type == SILC_SOCKET_TYPE_SERVER && sock->user_data) {
        SilcServerEntry server_entry = sock->user_data;
index dce3c9be2d41ff4300f769d0920ab902bf3758dd..16d0d7e76150955f8967381e38aab8ce0f8cbe03 100644 (file)
@@ -688,6 +688,8 @@ void silc_server_backup_resume_router(SilcServer server,
       unsigned char data[4];
       SILC_LOG_DEBUG(("Backup resuming not allowed since we are still "
                      "primary router"));
+      SILC_LOG_INFO(("Backup resuming not allowed since we are still "
+                    "primary router"));
       SILC_PUT32_MSB(SILC_SERVER_BACKUP_START, data);
       silc_server_packet_send(server, sock, SILC_PACKET_FAILURE, 0,
                              data, 4, FALSE);
index d30c60cf6ab77d64d95b0fc2adf262ee19a7df9e..c6233c7e93eaee68f0559c75f79e25ad1aabd595 100644 (file)
@@ -550,7 +550,7 @@ void silc_server_update_clients_by_server(SilcServer server,
 
        SILC_LOG_DEBUG(("Client %s",
                        silc_id_render(client->id, SILC_ID_CLIENT)));
-       if (client->router)
+       if (client->router && client->router->id)
          SILC_LOG_DEBUG(("Client->router %s",
                          silc_id_render(client->router->id, SILC_ID_SERVER)));
 
@@ -583,7 +583,7 @@ void silc_server_update_clients_by_server(SilcServer server,
          client->router = to;
        }
 
-       if (client->router)
+       if (client->router && client->router->id)
          SILC_LOG_DEBUG(("Client changed to %s",
                          silc_id_render(client->router->id, SILC_ID_SERVER)));
 
@@ -613,7 +613,7 @@ void silc_server_update_clients_by_server(SilcServer server,
 
        SILC_LOG_DEBUG(("Client %s",
                        silc_id_render(client->id, SILC_ID_CLIENT)));
-       if (client->router)
+       if (client->router && client->router->id)
          SILC_LOG_DEBUG(("Client->router %s",
                          silc_id_render(client->router->id, SILC_ID_SERVER)));
 
@@ -642,7 +642,7 @@ void silc_server_update_clients_by_server(SilcServer server,
          client->router = to;
        }
 
-       if (client->router)
+       if (client->router && client->router->id)
          SILC_LOG_DEBUG(("Client changed to %s",
                          silc_id_render(client->router->id, SILC_ID_SERVER)));