{
SilcClientConnection conn = fsm_context;
SilcClientCommandContext cmd;
+ SilcList list;
+ SilcIDCacheEntry entry;
+ SilcClientEntry client_entry;
/* Finish running command threads. This will also finish waiting packet
thread, as they are always waiting for some command. If any thread is
conn->internal->op = NULL;
}
+ /* Abort ongoing client entry operations */
+ if (conn->internal->client_cache) {
+ if (silc_idcache_get_all(conn->internal->client_cache, &list)) {
+ silc_list_start(list);
+ while ((entry = silc_list_get(list))) {
+ client_entry = entry->context;
+ if (client_entry->internal.op) {
+ silc_async_abort(client_entry->internal.op, NULL, NULL);
+ client_entry->internal.op = NULL;
+ }
+ }
+ }
+ }
+
/* If event thread is running, finish it. */
if (silc_fsm_is_started(&conn->internal->event_thread)) {
SILC_LOG_DEBUG(("Finish event thread"));