updates.
[silc.git] / lib / silcclient / client.c
index 1cd84f2f6b9d34cdce3173a63226e475a107a46f..fd17296d46772b06367d5b1ad416904939e35c3f 100644 (file)
@@ -850,6 +850,13 @@ void silc_client_packet_parse_type(SilcClient client,
       break;
     }
 
+  case SILC_PACKET_HEARTBEAT:
+    /*
+     * Received heartbeat packet
+     */
+    SILC_LOG_DEBUG(("Heartbeat packet"));
+    break;
+
   default:
     SILC_LOG_DEBUG(("Incorrect packet type %d, packet dropped", type));
     break;
@@ -1394,6 +1401,20 @@ void silc_client_notify_by_server(SilcClient client,
       goto out;
     }
 
+    /* If nickname or username hasn't been resolved, do so */
+    if (!client_entry->nickname || !client_entry->username) {
+      SilcPacketContext *p = silc_packet_context_dup(packet);
+      SilcBuffer idp = silc_id_payload_encode(client_id, SILC_ID_CLIENT);
+      silc_client_send_command(client, conn, SILC_COMMAND_WHOIS, 
+                              SILC_IDLIST_IDENT, 1, 
+                              3, idp->data, idp->len);
+      p->context = (void *)client;
+      p->sock = sock;
+      silc_client_command_pending(conn, SILC_COMMAND_WHOIS, SILC_IDLIST_IDENT, 
+                                 silc_client_notify_by_server_pending, p);
+      goto out;
+    }
+
     /* Get channel entry */
     channel_id = silc_id_str2id(packet->dst_id, packet->dst_id_len,
                                SILC_ID_CHANNEL);