diff options
author | Fulup Ar Foll <fulup@iot.bzh> | 2015-12-24 00:38:41 +0100 |
---|---|---|
committer | Fulup Ar Foll <fulup@iot.bzh> | 2015-12-24 00:38:41 +0100 |
commit | 06d422d1de5c505366f6a029d8af85548c2b646f (patch) | |
tree | 8d37559bff36bcb5237a203b9ac874286fdfe028 /src | |
parent | c6853a55ca911415e6851de27621b7022a665933 (diff) |
Fixed Client Session Context by Plugin
Diffstat (limited to 'src')
-rw-r--r-- | src/rest-api.c | 12 | ||||
-rw-r--r-- | src/session.c | 4 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/rest-api.c b/src/rest-api.c index c08d18c8..e19e1f2b 100644 --- a/src/rest-api.c +++ b/src/rest-api.c @@ -195,9 +195,12 @@ STATIC AFB_error callPluginApi(AFB_request *request, int plugidx, void *context) } } - // Effectively call the API with a subset of the context + // Effectively CALL PLUGIN API with a subset of the context jresp = plugin->apis[idx].callback(request, context); + // Store context in case it was updated by plugins + clientCtx->contexts[plugidx] = request->context; + // handle intermediary Post Iterates out of band if ((jresp == NULL) && (request->errcode == MHD_HTTP_OK)) return (AFB_SUCCESS); @@ -345,12 +348,7 @@ STATIC AFB_request *createRequest (struct MHD_Connection *connection, AFB_sessio request->prefix = strdup (baseurl); request->api = strdup (baseapi); request->plugins= session->plugins; - for (idx = 0; idx < session->config->pluginCount; idx++) { - if (!strcmp(baseurl, session->plugins[idx]->prefix)) { - request->plugin = session->plugins[idx]; - break; - } - } + // note request->handle is fed with request->context in ctxClientGet Done: free(urlcpy1); diff --git a/src/session.c b/src/session.c index f9f24d21..781ecd94 100644 --- a/src/session.c +++ b/src/session.c @@ -330,7 +330,7 @@ STATIC void ctxUuidFreeCB (AFB_clientCtx *client) { if (client->contexts[idx] != NULL) { freeCtxCB = client->plugins[idx]->freeCtxCB; if (freeCtxCB == NULL) free (client->contexts[idx]); - else if (freeCtxCB != (void*)-1) freeCtxCB(client->contexts[idx], client->plugins[idx]->handle, client->uuid); + else if (freeCtxCB != (void*)-1) freeCtxCB(client->contexts[idx], plugins[idx]->handle, client->uuid); } } } @@ -466,6 +466,7 @@ PUBLIC AFB_clientCtx *ctxClientGet (AFB_request *request, int idx) { clientCtx=NULL; } else { request->context=clientCtx->contexts[idx]; + request->handle = clientCtx->plugins[idx]->handle; request->uuid= uuid; return (clientCtx); } @@ -493,6 +494,7 @@ PUBLIC AFB_clientCtx *ctxClientGet (AFB_request *request, int idx) { // if (verbose) fprintf (stderr, "ctxClientGet New uuid=[%s] token=[%s] timestamp=%d\n", clientCtx->uuid, clientCtx->token, clientCtx->timeStamp); request->context = clientCtx->contexts[idx]; + request->handle = clientCtx->plugins[idx]->handle; request->uuid=clientCtx->uuid; return(clientCtx); } |