X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fpacket_send.c;h=49d12c7b66c747605a4ad4f33949002bdcf30467;hp=e51506acc27f757acc4f80ebf8a0f04580d45e09;hb=c2b07fdc09d15d9eb661cbc8ae1bc4acd9cb4bcd;hpb=83d361ceb03c1af11e99194caa4869b849396bc7 diff --git a/apps/silcd/packet_send.c b/apps/silcd/packet_send.c index e51506ac..49d12c7b 100644 --- a/apps/silcd/packet_send.c +++ b/apps/silcd/packet_send.c @@ -168,7 +168,8 @@ void silc_server_packet_send_dest(SilcServer server, return; } - SILC_LOG_DEBUG(("Sending %s packet", silc_get_packet_name(type))); + SILC_LOG_DEBUG(("Sending %s packet (forced=%s)", + silc_get_packet_name(type), force_send ? "yes" : "no")); if (dst_id) { dst_id_data = silc_id_id2str(dst_id, dst_id_type); @@ -882,6 +883,20 @@ void silc_server_packet_relay_to_channel(SilcServer server, continue; gone = TRUE; + /* If we are backup router and remote is our primary router and + we are currently doing backup resuming protocol we must not + re-encrypt message with session key. */ + if (server->backup_router && SILC_SERVER_IS_BACKUP(sock) && + SILC_PRIMARY_ROUTE(server) == sock) { + silc_server_packet_send_to_channel_real(server, sock, &packetdata, + idata->send_key, + idata->hmac_send, + idata->psn_send++, + data, data_len, TRUE, + force_send); + continue; + } + SILC_LOG_DEBUG(("Remote is router, encrypt with session key")); /* If private key mode is not set then decrypt the packet