Disconnect problem: Mark incoming connections immediately local
[silc.git] / lib / silcclient / client_entry.c
index 0c812de00adbd6bec3672098d5b4565e334c52f3..0933c3d4d8bad4b48ac0025b2564de8034b4ada2 100644 (file)
@@ -1281,6 +1281,7 @@ SilcClientEntry silc_client_nickname_format(SilcClient client,
   }
 
   newnick[off] = 0;
+  memset(client_entry->nickname, 0, sizeof(client_entry->nickname));
   memcpy(client_entry->nickname, newnick, strlen(newnick));
   silc_client_list_free(client, conn, clients);
 
@@ -1721,6 +1722,7 @@ SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
     return FALSE;
 
   silc_client_empty_channel(client, conn, channel);
+  silc_client_del_channel_private_keys(client, conn, channel);
   silc_hash_table_free(channel->user_list);
   silc_free(channel->channel_name);
   silc_free(channel->topic);
@@ -1747,7 +1749,6 @@ SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
   if (channel->channel_pubkeys)
     silc_argument_list_free(channel->channel_pubkeys,
                            SILC_ARGUMENT_PUBLIC_KEY);
-  silc_client_del_channel_private_keys(client, conn, channel);
   silc_atomic_uninit16(&channel->internal.refcnt);
   silc_rwlock_free(channel->internal.lock);
   silc_schedule_task_del_by_context(conn->client->schedule, channel);