updartes.
[silc.git] / apps / irssi / src / silc / core / silc-channels.c
index 5e52a6bbe861439e36576db8a9f574259a9bfa77..054e5d4d276f070e29cd9587e2767d79f4d0ffcd 100644 (file)
@@ -151,14 +151,9 @@ static void event_join(SILC_SERVER_REC *server, va_list va)
   } else {
     chanrec = silc_channel_find_entry(server, channel);
     if (chanrec != NULL) {
-      SilcChannelUser user;
-
-      silc_list_start(chanrec->entry->clients);
-      while ((user = silc_list_get(chanrec->entry->clients)) != NULL)
-       if (user->client == client) {
-         nickrec = silc_nicklist_insert(chanrec, user, TRUE);
-         break;
-       }
+      SilcChannelUser chu = silc_client_on_channel(channel, client);
+      if (chu)
+       nickrec = silc_nicklist_insert(chanrec, chu, TRUE);
     }
   }
 
@@ -250,7 +245,7 @@ static void event_topic(SILC_SERVER_REC *server, va_list va)
   char userhost[256];
   SilcIdType idtype;
 
-  idtype = va_arg(va, int);
+  idtype = va_arg(va, SilcIdType);
   entry = va_arg(va, void *);
   topic = va_arg(va, char *);
   channel = va_arg(va, SilcChannelEntry);
@@ -349,9 +344,11 @@ static void event_cmode(SILC_SERVER_REC *server, va_list va)
   channel = va_arg(va, SilcChannelEntry);
 
   mode = silc_client_chmode(modei, 
-                           channel->channel_key->cipher->name,
-                           silc_hmac_get_name(channel->hmac));
-  
+                           channel->channel_key ? 
+                           channel->channel_key->cipher->name : "",
+                           channel->hmac ? 
+                           silc_hmac_get_name(channel->hmac) : "");
+
   chanrec = silc_channel_find_entry(server, channel);
   if (chanrec != NULL) {
     g_free_not_null(chanrec->mode);