json_object *jresp = afb_req_json(request);
if (cache) {
- json_object **storage = get_storage_from_value(ns, name);
+ json_object **storage;
g_rw_lock_writer_lock(&ns->rw_lock);
+ storage = get_storage_from_value(ns, name);
+
if (*storage)
json_object_put(*storage);
json_object_get(jresp);
*storage = jresp;
+ // increment reference for event
+ json_object_get(jresp);
+ afb_event_push(event, jresp);
+
g_rw_lock_writer_unlock(&ns->rw_lock);
+
+ return;
}
+ g_rw_lock_reader_lock(&ns->rw_lock);
+
// increment reference for event
json_object_get(jresp);
afb_event_push(event, jresp);
+
+ g_rw_lock_reader_unlock(&ns->rw_lock);
}
static void broadcast_status(afb_req_t request)