X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fpacket_receive.c;h=ed8ad2f02233f60144601d03e16a4a5f08571f07;hb=ccfbb5f7a211591c8e5503c99ac3333f469bbe83;hp=33d1bce0a40d521b22fd95580175c5801084ad22;hpb=7259f22011c133f54062f2b9ab3838ba47e2b539;p=silc.git diff --git a/apps/silcd/packet_receive.c b/apps/silcd/packet_receive.c index 33d1bce0..ed8ad2f0 100644 --- a/apps/silcd/packet_receive.c +++ b/apps/silcd/packet_receive.c @@ -2497,6 +2497,30 @@ SilcServerEntry silc_server_new_server(SilcServer server, silc_server_announce_channels(server, 0, sock); } + /* Announce our information to backup router */ + if (new_server->server_type == SILC_BACKUP_ROUTER && + sock->type == SILC_SOCKET_TYPE_SERVER && + server->server_type == SILC_ROUTER) { + silc_server_announce_servers(server, TRUE, 0, sock); + silc_server_announce_clients(server, 0, sock); + silc_server_announce_channels(server, 0, sock); + } + + /* If backup router, mark it as one of ours. This server is considered + to be backup router after this setting. */ + if (new_server->server_type == SILC_BACKUP_ROUTER) { + SilcServerConfigRouter *backup; + backup = silc_server_config_find_backup_conn(server, sock->ip); + if (!backup) + backup = silc_server_config_find_backup_conn(server, sock->hostname); + if (backup) { + /* Add as our backup router */ + silc_server_backup_add(server, new_server, backup->backup_replace_ip, + backup->backup_replace_port, + backup->backup_local); + } + } + /* By default the servers connected to backup router are disabled until backup router has become the primary */ if (server->server_type == SILC_BACKUP_ROUTER &&