More client library rewrites.
[silc.git] / lib / silcclient / client_prvmsg.c
index 61c43b621aabf0e2d247bfc72a93e19121038e5c..a4addb359edd0ccf8b8d621a8ff5e0133b060a63 100644 (file)
@@ -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;