Set correct ID for message payload encrypting.
authorPekka Riikonen <priikone@silcnet.org>
Sat, 3 Nov 2007 22:14:53 +0000 (22:14 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 3 Nov 2007 22:14:53 +0000 (22:14 +0000)
CHANGES
apps/silcd/packet_send.c

diff --git a/CHANGES b/CHANGES
index ca6a2d8ab7bb35573cd4f1bde0f9b1341630dec4..b219ffb211f824d904953a7a0a048590fd46bce5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,10 @@ Sat Nov  3 23:23:38 EET 2007  Pekka Riikonen <priikone@silcnet.org>
          Do not disconnct already disconnected streams.  Affected
          files are in apps/silcd/.
 
+       * Fixed setting correct ID for re-encrypted channel messages
+         in router-to-router connections.  Affected file is
+         apps/silcd/packet_send.c.
+
 Sun Sep 30 15:16:18 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
 
        * Fixed channel private key deleting when deleting the channel.
index 7e19280e1649376bb4ab38c8a7afe5431d86b470..234b88f005bce5e5135d6ec0afa62753eef5554b 100644 (file)
@@ -399,6 +399,8 @@ void silc_server_packet_send_to_channel(SilcServer server,
 static SilcBool
 silc_server_packet_relay_to_channel_encrypt(SilcServer server,
                                            SilcPacketStream sender,
+                                           void *sender_id,
+                                           SilcIdType sender_type,
                                            SilcChannelEntry channel,
                                            unsigned char *data,
                                            unsigned int data_len)
@@ -451,8 +453,9 @@ silc_server_packet_relay_to_channel_encrypt(SilcServer server,
 
     memcpy(iv, data + (data_len - iv_len - mac_len), iv_len);
 
-    src_id.type = SILC_ID_SERVER;
-    src_id.u.server_id = *((SilcServerEntry)idata)->id;
+    SILC_ASSERT(sender_type == SILC_ID_CLIENT);
+    src_id.type = SILC_ID_CLIENT;
+    src_id.u.client_id = *((SilcClientID *)sender_id);
     dst_id.type = SILC_ID_CHANNEL;
     dst_id.u.channel_id = *channel->id;
 
@@ -502,6 +505,7 @@ void silc_server_packet_relay_to_channel(SilcServer server,
      channel key. If the channel key does not exist, then we know we
      don't have a single local user on the channel. */
   if (!silc_server_packet_relay_to_channel_encrypt(server, sender_sock,
+                                                  sender_id, sender_type,
                                                   channel, data,
                                                   data_len))
     return;