afb-stub-ws: Fix concurrent memory issues 05/20005/1 7.0.0 guppy/7.0.0 guppy_7.0.0
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 8 Feb 2019 12:09:39 +0000 (13:09 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Fri, 8 Feb 2019 14:15:25 +0000 (15:15 +0100)
This changes takes care to increment the
the count of reference before using it.

Bug-AGL: SPEC-2163

Change-Id: Ia7882427eeae933eeb5030aad025ebb1da129d6f
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-stub-ws.c

index 7ec2d63..5e57dba 100644 (file)
@@ -266,6 +266,7 @@ static void client_api_call_cb(void * closure, struct afb_xreq *xreq)
                return;
        }
 
+       afb_xreq_unhooked_addref(xreq);
        rc = afb_proto_ws_client_call(
                        proto,
                        xreq->request.called_verb,
@@ -273,10 +274,10 @@ static void client_api_call_cb(void * closure, struct afb_xreq *xreq)
                        afb_session_uuid(xreq->context.session),
                        xreq,
                        xreq_on_behalf_cred_export(xreq));
-       if (rc >= 0)
-               afb_xreq_unhooked_addref(xreq);
-       else
+       if (rc < 0) {
                afb_xreq_reply(xreq, NULL, "internal", "can't send message");
+               afb_xreq_unhooked_unref(xreq);
+       }
 }
 
 static void client_on_description_cb(void *closure, struct json_object *data)