Values in the kvstore are raw byte arrays, not strings.
[bluesky.git] / bluesky / store.c
index 7a63b04..785372b 100644 (file)
@@ -215,6 +215,7 @@ static void op_complete(gpointer a, gpointer b)
 {
     BlueSkyStoreAsync *barrier = (BlueSkyStoreAsync *)b;
 
+    bluesky_store_async_ref(barrier);
     g_mutex_lock(barrier->lock);
     barrier->store_private
         = GINT_TO_POINTER(GPOINTER_TO_INT(barrier->store_private) - 1);
@@ -223,6 +224,7 @@ static void op_complete(gpointer a, gpointer b)
         bluesky_store_async_mark_complete(barrier);
     }
     g_mutex_unlock(barrier->lock);
+    bluesky_store_async_unref(barrier);
 }
 
 /* Add the given operation to the barrier.  The barrier will not complete until
@@ -395,10 +397,12 @@ static void filestore_submit(gpointer s, BlueSkyStoreAsync *async)
     switch (async->op) {
     case STORE_OP_GET:
         async->data = filestore_get(async->key);
+        async->result = 0;
         break;
 
     case STORE_OP_PUT:
         filestore_put(async->key, async->data);
+        async->result = 0;
         break;
 
     default: