X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-hreq.c;h=9c6309123fd891d33f38b64e0b7bff69ae49d685;hb=197626868aaf84e9a68e8e7e5397ef1c6883a0f1;hp=6589f0f46412a3b6f94d8bcfb023aceb29fa77c4;hpb=03f863dd080d32f71c4a0755c02e23c72e4cb342;p=src%2Fapp-framework-binder.git diff --git a/src/afb-hreq.c b/src/afb-hreq.c index 6589f0f4..9c630912 100644 --- a/src/afb-hreq.c +++ b/src/afb-hreq.c @@ -33,12 +33,12 @@ #endif #include "afb-method.h" -#include +#include #include "afb-msg-json.h" #include "afb-context.h" #include "afb-hreq.h" -#include "afb-subcall.h" #include "afb-session.h" +#include "afb-cred.h" #include "verbose.h" #include "locale-root.h" @@ -319,6 +319,7 @@ static void req_destroy(struct afb_xreq *xreq) json_object_put(hreq->json); free((char*)hreq->xreq.api); free((char*)hreq->xreq.verb); + afb_cred_unref(hreq->xreq.cred); free(hreq); } @@ -910,16 +911,19 @@ static void req_success(struct afb_xreq *xreq, json_object *obj, const char *inf req_reply(hreq, MHD_HTTP_OK, "success", info, obj); } -int afb_hreq_init_req_call(struct afb_hreq *hreq, const char *api, size_t lenapi, const char *verb, size_t lenverb) +void afb_hreq_call(struct afb_hreq *hreq, struct afb_apiset *apiset, const char *api, size_t lenapi, const char *verb, size_t lenverb) { hreq->xreq.api = strndup(api, lenapi); hreq->xreq.verb = strndup(verb, lenverb); if (hreq->xreq.api == NULL || hreq->xreq.verb == NULL) { ERROR("Out of memory"); - errno = ENOMEM; - return -1; + afb_hreq_reply_error(hreq, MHD_HTTP_INTERNAL_SERVER_ERROR); + } else if (afb_hreq_init_context(hreq) < 0) { + afb_hreq_reply_error(hreq, MHD_HTTP_INTERNAL_SERVER_ERROR); + } else { + afb_xreq_addref(&hreq->xreq); /* TODO check if needed */ + afb_xreq_process(&hreq->xreq, apiset); } - return afb_hreq_init_context(hreq); } int afb_hreq_init_context(struct afb_hreq *hreq)