X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient_prvmsg.c;h=a4addb359edd0ccf8b8d621a8ff5e0133b060a63;hb=598a79d875c80b1f6cbee2ae78198cbff46ab7dc;hp=61c43b621aabf0e2d247bfc72a93e19121038e5c;hpb=71d1fefe6029e201edca6a93f39a0646a40c294b;p=silc.git diff --git a/lib/silcclient/client_prvmsg.c b/lib/silcclient/client_prvmsg.c index 61c43b62..a4addb35 100644 --- a/lib/silcclient/client_prvmsg.c +++ b/lib/silcclient/client_prvmsg.c @@ -669,12 +669,17 @@ silc_client_list_private_message_keys(SilcClient client, if (!client || !conn) return NULL; - if (!silc_idcache_get_all(conn->internal->client_cache, &list)) + silc_mutex_lock(conn->internal->lock); + if (!silc_idcache_get_all(conn->internal->client_cache, &list)) { + silc_mutex_unlock(conn->internal->lock); return NULL; + } keys = silc_calloc(silc_list_count(list), sizeof(*keys)); - if (!keys) + if (!keys) { + silc_mutex_unlock(conn->internal->lock); return NULL; + } silc_list_start(list); while ((id_cache = silc_list_get(list))) { @@ -691,6 +696,8 @@ silc_client_list_private_message_keys(SilcClient client, } } + silc_mutex_unlock(conn->internal->lock); + if (key_count) *key_count = count;