Fix JSON response lifecycle issues 86/22286/1
authorScott Murray <scott.murray@konsulko.com>
Fri, 30 Aug 2019 17:37:11 +0000 (13:37 -0400)
committerScott Murray <scott.murray@konsulko.com>
Fri, 30 Aug 2019 17:44:03 +0000 (13:44 -0400)
Move json_object_put calls to fix lifecycle issues exposed by the
json-c upgrade with OE thud.  In the newer version, an extra put
now triggers an assertion, so rework the affected logic to only call
put when needed in the failed request cases.

Bug-AGL: SPEC-2707

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ia111e408abf515e3ea7b105c66c1339daa759a87

src/api.cpp

index bf04453..8573b47 100644 (file)
@@ -60,10 +60,10 @@ void OnRequestNavicoreGetPosition(afb_req req)
        {
                AFB_REQ_ERROR(req, "%s - %s:%d", response.errMessage.c_str(), __FILE__, __LINE__);
                afb_req_fail(req, "failed", "navicore_getposition Bad Request");
-       }
 
-       // Json object release
-       json_object_put(response.json_data);
+               // Json object release
+               json_object_put(response.json_data);
+       }
 
        AFB_REQ_NOTICE(req, "<-- End %s()", __func__);
 }
@@ -98,10 +98,10 @@ void OnRequestNavicoreGetAllRoutes(afb_req req)
        {
                AFB_REQ_ERROR(req, "%s - %s:%d", response.errMessage.c_str(), __FILE__, __LINE__);
                afb_req_fail(req, "failed", "navicore_getallroutes Bad Request");
-       }
 
-       // json object release
-       json_object_put(response.json_data);
+               // json object release
+               json_object_put(response.json_data);
+       }
 
        AFB_REQ_NOTICE(req, "<-- End %s()", __func__);
 }
@@ -146,10 +146,10 @@ void OnRequestNavicoreCreateRoute(afb_req req)
        {
                AFB_REQ_ERROR(req, "%s - %s:%d", response.errMessage.c_str(), __FILE__, __LINE__);
                afb_req_fail(req, "failed", "navicore_createroute Bad Request");
-       }
 
-       // json object release
-       json_object_put(response.json_data);
+               // json object release
+               json_object_put(response.json_data);
+       }
 
        AFB_REQ_NOTICE(req, "<-- End %s()", __func__);
 }
@@ -365,10 +365,10 @@ void OnRequestNavicoreGetAllSessions(afb_req req)
        {
                AFB_REQ_ERROR(req, "%s - %s:%d", response.errMessage.c_str(), __FILE__, __LINE__);
                afb_req_fail(req, "failed", "navicore_getallsessions Bad Request");
-       }
 
-       // json object release
-       json_object_put(response.json_data);
+               // json object release
+               json_object_put(response.json_data);
+       }
 
        AFB_REQ_NOTICE(req, "<-- End %s()", __func__);
 }