From f3a1fb9e40f2d609d128b7a0b3eb3e963cdea0b5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Sun, 22 May 2016 07:54:10 +0200 Subject: [PATCH] Add verbs for closing and setting LOA MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These new verbs are now available to plugins. LOA is the level-of-authorisation. The usage of these new verbs must be protected by a mechanism that is still to be done. Change-Id: Ia591fb6bf9cd16956dc95658c5ba3a24ee4380be Signed-off-by: José Bollo --- include/afb/afb-req-itf.h | 13 +++++++++++++ src/afb-hreq.c | 4 +++- src/afb-ws-json1.c | 4 +++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/afb/afb-req-itf.h b/include/afb/afb-req-itf.h index a3ff9fe0..6984d0fa 100644 --- a/include/afb/afb-req-itf.h +++ b/include/afb/afb-req-itf.h @@ -40,6 +40,9 @@ struct afb_req_itf { void (*addref)(void *closure); void (*unref)(void *closure); + + void (*session_close)(void *closure); + void (*session_set_LOA)(void *closure, unsigned level); }; struct afb_req { @@ -123,6 +126,16 @@ static inline void afb_req_unref(struct afb_req req) return req.itf->unref(req.closure); } +static inline void afb_req_session_close(struct afb_req req) +{ + return req.itf->session_close(req.closure); +} + +static inline void afb_req_session_set_LOA(struct afb_req req, unsigned level) +{ + return req.itf->session_set_LOA(req.closure, level); +} + #include static inline struct afb_req *afb_req_store(struct afb_req req) diff --git a/src/afb-hreq.c b/src/afb-hreq.c index b1f300db..6cd1e225 100644 --- a/src/afb-hreq.c +++ b/src/afb-hreq.c @@ -82,7 +82,9 @@ static const struct afb_req_itf afb_hreq_itf = { .context_get = (void*)afb_context_get, .context_set = (void*)afb_context_set, .addref = (void*)afb_hreq_addref, - .unref = (void*)afb_hreq_unref + .unref = (void*)afb_hreq_unref, + .session_close = (void*)afb_context_close, + .session_set_LOA = (void*)afb_context_change_loa }; static struct hreq_data *get_data(struct afb_hreq *hreq, const char *key, int create) diff --git a/src/afb-ws-json1.c b/src/afb-ws-json1.c index 78b8c210..351a5d09 100644 --- a/src/afb-ws-json1.c +++ b/src/afb-ws-json1.c @@ -169,7 +169,9 @@ static const struct afb_req_itf wsreq_itf = { .context_get = (void*)afb_context_get, .context_set = (void*)afb_context_set, .addref = (void*)wsreq_addref, - .unref = (void*)wsreq_unref + .unref = (void*)wsreq_unref, + .session_close = (void*)afb_context_close, + .session_set_LOA = (void*)afb_context_change_loa }; static int aws_wsreq_parse(struct afb_wsreq *r, char *text, size_t size) -- 2.16.6