updates.
[silc.git] / lib / silcclient / client_notify.c
index 85b4530de9055b15e9a866b27173924de4b26990..1b7c39720a131a265c51fe7ad21cbf14af694fa1 100644 (file)
@@ -38,6 +38,19 @@ typedef struct {
 static void silc_client_notify_by_server_pending(void *context, void *context2)
 {
   SilcClientNotifyResolve res = (SilcClientNotifyResolve)context;
+  SilcClientCommandReplyContext reply = 
+    (SilcClientCommandReplyContext)context2;
+
+  if (reply) {
+    SilcCommandStatus status;
+    unsigned char *tmp = silc_argument_get_arg_type(reply->args, 1, NULL);
+    SILC_GET16_MSB(status, tmp);
+    if (status != SILC_STATUS_OK) {
+      silc_socket_free(res->sock);
+      return;
+    }
+  }
+
   silc_client_notify_by_server(res->context, res->sock, res->packet);
   silc_socket_free(res->sock);
 }
@@ -191,6 +204,9 @@ void silc_client_notify_by_server(SilcClient client,
       client_entry->status |= SILC_CLIENT_STATUS_RESOLVING;
       silc_client_notify_by_server_resolve(client, conn, packet, client_id);
       goto out;
+    } else {
+      if (client_entry != conn->local_entry)
+       silc_client_nickname_format(client, conn, client_entry);
     }
 
     /* Get Channel ID */
@@ -393,6 +409,9 @@ void silc_client_notify_by_server(SilcClient client,
     if (!client_entry2) {
       silc_client_notify_by_server_resolve(client, conn, packet, client_id);
       goto out;
+    } else {
+      if (client_entry2 != conn->local_entry)
+       silc_client_nickname_format(client, conn, client_entry2);
     }
 
     /* Remove the old from cache */