udpates.
[silc.git] / lib / silcclient / idlist.c
index 83efa2057fd70d09a6c4624689346696c31edaa4..f5686a7214c9ebacaf09a75326ea321b2b37269c 100644 (file)
@@ -20,6 +20,7 @@
 /* $Id$ */
 
 #include "clientlibincludes.h"
+#include "client_internal.h"
 
 typedef struct {
   SilcClientCommandContext cmd;
@@ -311,6 +312,7 @@ void silc_client_get_clients_by_list(SilcClient client,
 
       if (entry) {
        if (entry->status & SILC_CLIENT_STATUS_RESOLVING) {
+         entry->status &= ~SILC_CLIENT_STATUS_RESOLVING;
          silc_free(client_id);
          silc_buffer_pull(client_id_list, idp_len);
          continue;
@@ -630,6 +632,7 @@ void silc_client_update_client(SilcClient client,
 /* Deletes the client entry and frees all memory. */
 
 void silc_client_del_client_entry(SilcClient client, 
+                                 SilcClientConnection conn,
                                  SilcClientEntry client_entry)
 {
   SILC_LOG_DEBUG(("Start"));
@@ -644,6 +647,7 @@ void silc_client_del_client_entry(SilcClient client,
   if (client_entry->receive_key)
     silc_cipher_free(client_entry->receive_key);
   silc_free(client_entry->key);
+  silc_client_ftp_session_free_client(conn, client_entry);
   silc_free(client_entry);
 }
 
@@ -653,7 +657,7 @@ bool silc_client_del_client(SilcClient client, SilcClientConnection conn,
                            SilcClientEntry client_entry)
 {
   bool ret = silc_idcache_del_by_context(conn->client_cache, client_entry);
-  silc_client_del_client_entry(client, client_entry);
+  silc_client_del_client_entry(client, conn, client_entry);
   return ret;
 }