X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-hreq.c;h=0fe908cb6818d5d6ef11c0a8f7677c1a94675dae;hb=44f21bd2a3b50f92669223cdafe79993654c1e19;hp=00d4b0eb710160714e26c2751c476f17257ac9f3;hpb=feccdb76f572a5fad947475c21b5b9aff696b04b;p=src%2Fapp-framework-binder.git diff --git a/src/afb-hreq.c b/src/afb-hreq.c index 00d4b0eb..0fe908cb 100644 --- a/src/afb-hreq.c +++ b/src/afb-hreq.c @@ -335,6 +335,8 @@ void afb_hreq_unref(struct afb_hreq *hreq) } afb_context_disconnect(&hreq->context); json_object_put(hreq->json); + free(hreq->api); + free(hreq->verb); free(hreq); } @@ -940,6 +942,20 @@ static void req_subcall(struct afb_hreq *hreq, const char *api, const char *verb afb_subcall(&hreq->context, api, verb, args, callback, closure, (struct afb_req){ .itf = &afb_hreq_req_itf, .closure = hreq }); } +int afb_hreq_init_req_call(struct afb_hreq *hreq, const char *api, size_t lenapi, const char *verb, size_t lenverb) +{ + free(hreq->api); + free(hreq->verb); + hreq->api = strndup(api, lenapi); + hreq->verb = strndup(verb, lenverb); + if (hreq->api == NULL || hreq->verb == NULL) { + ERROR("Out of memory"); + errno = ENOMEM; + return -1; + } + return afb_hreq_init_context(hreq); +} + int afb_hreq_init_context(struct afb_hreq *hreq) { const char *uuid;