manages reference counting for events
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 21 Apr 2016 15:49:30 +0000 (17:49 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 21 Apr 2016 15:49:30 +0000 (17:49 +0200)
Events are sent to an unknown count of receivers.
For this reason, the function push should not
consume the json object given.

Change-Id: Ie6c60074bd3822e7107d670f905cc86f56f826bf
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
plugins/samples/HelloWorld.c
src/session.c

index ec060e9..2714ef4 100644 (file)
@@ -54,7 +54,7 @@ static void pingBug (struct afb_req request)
 static void pingEvent(struct afb_req request)
 {
        json_object *query = afb_req_json(request);
-       afb_evmgr_push(afb_daemon_get_evmgr(interface->daemon), "event", json_object_get(query));
+       afb_evmgr_push(afb_daemon_get_evmgr(interface->daemon), "event", query);
        ping(request, json_object_get(query), "event");
 }
 
index 3e08808..d4abde6 100644 (file)
@@ -25,6 +25,8 @@
 #include <assert.h>
 #include <errno.h>
 
+#include <json.h>
+
 #include "session.h"
 
 #define NOW (time(NULL))
@@ -351,7 +353,7 @@ static int send(struct AFB_clientCtx *clientCtx, const char *event, struct json_
        result = 0;
        iter = clientCtx->senders;
        while (iter != NULL) {
-               iter->sender.itf->send(iter->sender.closure, event, object);
+               iter->sender.itf->send(iter->sender.closure, event, json_object_get(object));
                result++;
                iter = iter->next;
        }