if (silc_unlikely(!client || !conn || !channel))
return FALSE;
- if (silc_unlikely(flags & SILC_MESSAGE_FLAG_SIGNED && !hash))
+ if (silc_unlikely(flags & SILC_MESSAGE_FLAG_SIGNED && !hash)) {
+ SILC_LOG_ERROR(("Cannot send signed message without hash, missing "
+ "arguments"));
return FALSE;
+ }
if (silc_unlikely(conn->internal->disconnected))
return FALSE;
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);
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);
SilcClientEntry client_entry = context;
SilcClientKeyAgreement ke = client_entry->internal.ke;
+ if (!ke)
+ return;
+
SILC_LOG_DEBUG(("Key agreement %p timeout", ke));
ke->completion(ke->client, ke->conn, client_entry,
if (silc_unlikely(!client || !conn || !client_entry))
return FALSE;
- if (silc_unlikely(flags & SILC_MESSAGE_FLAG_SIGNED && !hash))
+ if (silc_unlikely(flags & SILC_MESSAGE_FLAG_SIGNED && !hash)) {
+ SILC_LOG_ERROR(("Cannot send signed message without hash, missing "
+ "arguments"));
return FALSE;
+ }
if (silc_unlikely(conn->internal->disconnected))
return FALSE;