Support for SILC 1.2 INVITE and BAN commands. Client supports
[silc.git] / apps / silcd / packet_send.c
index 9113f68840de7bc55d4db9fc02b7ec9f4372b512..0d97aeafd33ecabab76994248887f38c9ee996d0 100644 (file)
@@ -180,7 +180,8 @@ void silc_server_packet_send_dest(SilcServer server,
     cipher = idata->send_key;
     hmac = idata->hmac_send;
     sequence = idata->psn_send++;
-    block_len = silc_cipher_get_block_len(cipher);
+    if (cipher)
+      block_len = silc_cipher_get_block_len(cipher);
 
     /* Check for mandatory rekey */
     if (sequence == SILC_SERVER_REKEY_THRESHOLD)
@@ -758,10 +759,9 @@ silc_server_packet_relay_to_channel_encrypt(SilcServer server,
       return FALSE;
     }
 
-    memcpy(iv, data + (data_len - iv_len), iv_len);
-    silc_channel_message_payload_encrypt(data, data_len - iv_len - mac_len,
-                                        data_len, iv, iv_len,
-                                        channel->channel_key, channel->hmac);
+    memcpy(iv, data + (data_len - iv_len - mac_len), iv_len);
+    silc_message_payload_encrypt(data, data_len - iv_len, iv, iv_len,
+                                channel->channel_key, channel->hmac);
   }
 
   return TRUE;
@@ -937,8 +937,9 @@ void silc_server_packet_relay_to_channel(SilcServer server,
          memcpy(tmp, data, data_len);
 
          /* Decrypt the channel message (we don't check the MAC) */
-         silc_channel_message_payload_decrypt(tmp, data_len,
-                                              channel->channel_key, NULL);
+         silc_message_payload_decrypt(tmp, data_len, FALSE, FALSE,
+                                      channel->channel_key,
+                                      channel->hmac, FALSE);
 
          /* Now re-encrypt and send it to the router */
          silc_server_packet_send_srcdest(server, sock,
@@ -1453,7 +1454,8 @@ void silc_server_send_notify_ban(SilcServer server,
                                 SilcSocketConnection sock,
                                 bool broadcast,
                                 SilcChannelEntry channel,
-                                char *add, char *del)
+                                unsigned char *action,
+                                SilcBuffer list)
 {
   SilcBuffer idp;
 
@@ -1461,8 +1463,8 @@ void silc_server_send_notify_ban(SilcServer server,
   silc_server_send_notify(server, sock, broadcast,
                          SILC_NOTIFY_TYPE_BAN, 3,
                          idp->data, idp->len,
-                         add, add ? strlen(add) : 0,
-                         del, del ? strlen(del) : 0);
+                         action ? action : NULL, action ? 1 : 0,
+                         list ? list->data : NULL, list ? list->len : 0);
   silc_buffer_free(idp);
 }
 
@@ -1476,7 +1478,8 @@ void silc_server_send_notify_invite(SilcServer server,
                                    bool broadcast,
                                    SilcChannelEntry channel,
                                    SilcClientID *client_id,
-                                   char *add, char *del)
+                                   unsigned char *action,
+                                   SilcBuffer list)
 {
   SilcBuffer idp, idp2;
 
@@ -1487,8 +1490,8 @@ void silc_server_send_notify_invite(SilcServer server,
                          idp->data, idp->len,
                          channel->channel_name, strlen(channel->channel_name),
                          idp2->data, idp2->len,
-                         add, add ? strlen(add) : 0,
-                         del, del ? strlen(del) : 0);
+                         action ? action : NULL, action ? 1 : 0,
+                         list ? list->data : NULL, list ? list->len : 0);
   silc_buffer_free(idp);
   silc_buffer_free(idp2);
 }