diff options
author | José Bollo <jose.bollo@iot.bzh> | 2016-04-21 17:49:30 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2016-04-21 17:49:30 +0200 |
commit | 3bbfb37bb4572a110122b1a83e21261108a65460 (patch) | |
tree | 4fbe1c5537d4e1b186bb8676535c28618b31d994 | |
parent | 289017821655e0d9750eb7d5ae82c23790422a50 (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.c | 2 | ||||
-rw-r--r-- | src/session.c | 4 |
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; } |