summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-04-21 17:49:30 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-04-21 17:49:30 +0200
commit3bbfb37bb4572a110122b1a83e21261108a65460 (patch)
tree4fbe1c5537d4e1b186bb8676535c28618b31d994
parent289017821655e0d9750eb7d5ae82c23790422a50 (diff)
manages reference counting for events
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>
-rw-r--r--plugins/samples/HelloWorld.c2
-rw-r--r--src/session.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/plugins/samples/HelloWorld.c b/plugins/samples/HelloWorld.c
index ec060e97..2714ef4e 100644
--- a/plugins/samples/HelloWorld.c
+++ b/plugins/samples/HelloWorld.c
@@ -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");
}
diff --git a/src/session.c b/src/session.c
index 3e08808f..d4abde65 100644
--- a/src/session.c
+++ b/src/session.c
@@ -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;
}