X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-api-dyn.c;h=571f7fac3adbd5bde76af77137c72c152dca3bec;hb=04241c8168fe8826b4fc7a80500577b50936b57a;hp=880221095d3d04bfb81d1800df50608c27e25854;hpb=59cd34b59853f6a47e756d7ab5bc0329f40a471c;p=src%2Fapp-framework-binder.git diff --git a/src/afb-api-dyn.c b/src/afb-api-dyn.c index 88022109..571f7fac 100644 --- a/src/afb-api-dyn.c +++ b/src/afb-api-dyn.c @@ -58,11 +58,14 @@ int afb_api_dyn_add_verb( const char *verb, const char *info, void (*callback)(struct afb_request *request), + void *vcbdata, const struct afb_auth *auth, uint32_t session) { struct afb_api_dyn_verb *v, **vv; + afb_api_dyn_sub_verb(dynapi, verb); + vv = realloc(dynapi->verbs, (1 + dynapi->count) * sizeof *vv); if (!vv) goto oom; @@ -73,6 +76,7 @@ int afb_api_dyn_add_verb( goto oom; v->callback = callback; + v->vcbdata = vcbdata; v->auth = auth; v->session = session; @@ -114,19 +118,21 @@ int afb_api_dyn_sub_verb( static void call_cb(void *closure, struct afb_xreq *xreq) { struct afb_api_dyn *dynapi = closure; - struct afb_api_dyn_verb **verbs; + struct afb_api_dyn_verb **verbs, *v; const struct afb_verb_v2 *verbsv2; int i; const char *name; - name = xreq->verb; + name = xreq->request.verb; xreq->request.dynapi = (void*)dynapi->export; /* hack: this avoids to export afb_export structure */ /* look first in dyna mic verbs */ verbs = dynapi->verbs; i = dynapi->count; while (i) { - if (!strcasecmp(verbs[--i]->verb, name)) { + v = verbs[--i]; + if (!strcasecmp(v->verb, name)) { + xreq->request.vcbdata = v->vcbdata; afb_xreq_call_verb_vdyn(xreq, verbs[i]); return; }