summaryrefslogtreecommitdiffstats
path: root/src/afb-stub-ws.c
diff options
context:
space:
mode:
authorJose Bollo <jose.bollo@iot.bzh>2019-12-18 18:26:00 +0100
committerJose Bollo <jose.bollo@iot.bzh>2020-01-03 16:53:38 +0100
commit36ed9d2eb93f135ff293df5716f8232c664d32f4 (patch)
treebe2418a3856ab73b6e892399bf977c7f7f5efe0f /src/afb-stub-ws.c
parentc6fcbec33ab346ee8a658531afb130647c656df7 (diff)
afb-evt: Ensure unsubscribe works
Fix the logic of unsubscribing to events. It was not possible before to implment it without tracking every session and context. It was not done because of the required complexity. This implementation ensures that unexpected events lead to a removal of the listener from the list of watchers of the events. The management of the list of watchers is reworked to free unused memory. Bug-AGL: SPEC-3069 Change-Id: Ie67372adbde9dcb9dc6c5c2738111d22609e7256 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-stub-ws.c')
-rw-r--r--src/afb-stub-ws.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/afb-stub-ws.c b/src/afb-stub-ws.c
index 197d4cdc..806c5e47 100644
--- a/src/afb-stub-ws.c
+++ b/src/afb-stub-ws.c
@@ -177,13 +177,10 @@ static int server_req_subscribe_cb(struct afb_xreq *xreq, struct afb_event_x2 *e
static int server_req_unsubscribe_cb(struct afb_xreq *xreq, struct afb_event_x2 *event)
{
- int rc, rc2;
+ int rc;
struct server_req *wreq = CONTAINER_OF_XREQ(struct server_req, xreq);
rc = afb_proto_ws_call_unsubscribe(wreq->call, afb_evt_event_x2_id(event));
- rc2 = afb_evt_listener_unwatch_x2(wreq->stubws->listener, event);
- if (rc >= 0 && rc2 < 0)
- rc = rc2;
if (rc < 0)
ERROR("error while unsubscribing event");
return rc;