summaryrefslogtreecommitdiffstats
path: root/src/afb-hreq.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-03-27 11:23:51 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-03-27 11:23:51 +0200
commit44f21bd2a3b50f92669223cdafe79993654c1e19 (patch)
treeb8656cf9c11f25183bd95822c085ce35a459a9e5 /src/afb-hreq.c
parentfeccdb76f572a5fad947475c21b5b9aff696b04b (diff)
Simplify functions for calls
For historical reasons, the call to apis was passing the length of the api and the length of the verb. The reason was to avoid a copy of strings. But the copy occured only for HTTP requests. Having this implementation is of small interest and compromise future changes. This patch simplify things. Change-Id: I8157724c6c721b6797cd0eab52b07e1b8d6eb5f8 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-hreq.c')
-rw-r--r--src/afb-hreq.c16
1 files changed, 16 insertions, 0 deletions
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;