Backup router testing, fixes.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 14 Oct 2003 15:37:52 +0000 (15:37 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 14 Oct 2003 15:37:52 +0000 (15:37 +0000)
apps/silcd/packet_receive.c
apps/silcd/server_backup.c

index 6d12cefa4491ef1258206118f435f06bd03e502a..b9a0224f052f99174af426457632390cdc458960 100644 (file)
@@ -1279,6 +1279,12 @@ void silc_server_notify(SilcServer server,
 
     SILC_LOG_DEBUG(("SERVER SIGNOFF notify"));
 
+    /* Backup router shouldn't accept SERVER_SIGNOFF's from normal routers
+       when the backup isn't acting as primary router. */
+    if (sock->type == SILC_SOCKET_TYPE_SERVER &&
+       server->backup_router && server->server_type == SILC_BACKUP_ROUTER)
+      return;
+
     /* Get Server ID */
     tmp = silc_argument_get_arg_type(args, 1, &tmp_len);
     if (!tmp)
index df9d1b7e4ffaf87cf8ff76d0ac43a55b602e0ec6..dce3c9be2d41ff4300f769d0920ab902bf3758dd 100644 (file)
@@ -1242,7 +1242,7 @@ SILC_TASK_CALLBACK_GLOBAL(silc_server_protocol_backup)
        data[1] = 0;
        silc_server_packet_send(server, sock, SILC_PACKET_RESUME_ROUTER, 0,
                                data, sizeof(data), FALSE);
-       silc_server_packet_queue_purge(server,sock);
+       silc_server_packet_queue_purge(server, sock);
       }
 
       /* Now send the same packet to backup */
@@ -1394,6 +1394,7 @@ SILC_TASK_CALLBACK(silc_server_protocol_backup_done)
     /* The SilcProtocol context was shared between all connections, clear
        it from all connections. */
     if (sock->protocol == protocol) {
+      silc_server_packet_queue_purge(server, sock);
       sock->protocol = NULL;
 
       if (error) {