updates.
[silc.git] / apps / silcd / packet_receive.c
index dc38962f82a9f2bcf1f74d0323b56db3498b67b0..f207289903b432154ca047fc228dcecbcec00437 100644 (file)
@@ -316,7 +316,7 @@ void silc_server_notify(SilcServer server,
 
     if (channel->topic)
       silc_free(channel->topic);
-    channel->topic = silc_calloc(tmp_len, sizeof(*channel->topic));
+    channel->topic = silc_calloc(tmp_len + 1, sizeof(*channel->topic));
     memcpy(channel->topic, tmp, tmp_len);
 
     /* Send the same notify to the channel */
@@ -701,9 +701,11 @@ void silc_server_notify(SilcServer server,
       }
       if (users_modes) {
        silc_buffer_push(users_modes, users_modes->data - users_modes->head);
-       silc_server_packet_send(server, sock,
-                               SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST,
-                               users_modes->data, users_modes->len, FALSE);
+       silc_server_packet_send_dest(server, sock,
+                                    SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST,
+                                    channel->id, SILC_ID_CHANNEL,
+                                    users_modes->data, 
+                                    users_modes->len, FALSE);
        silc_buffer_free(users_modes);
       }
     }
@@ -1881,6 +1883,9 @@ void silc_server_new_channel(SilcServer server,
        return;
       }
 
+      /* Get the mode and set it to the channel */
+      channel->mode = silc_channel_get_mode(payload);
+
       /* Send the new channel key to the server */
       chk = silc_channel_key_payload_encode(id_len, id,
                                            strlen(channel->channel_key->
@@ -1961,9 +1966,11 @@ void silc_server_new_channel(SilcServer server,
       }
       if (users_modes) {
        silc_buffer_push(users_modes, users_modes->data - users_modes->head);
-       silc_server_packet_send(server, sock,
-                               SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST,
-                               users_modes->data, users_modes->len, FALSE);
+       silc_server_packet_send_dest(server, sock,
+                                    SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST,
+                                    channel->id, SILC_ID_CHANNEL,
+                                    users_modes->data, 
+                                    users_modes->len, FALSE);
        silc_buffer_free(users_modes);
       }
     }