- verbose(level, file, line, "%s {binding %s}", p, desc->binding->v1.prefix);
- free(p);
- }
-}
-
-static void monitored_call(int signum, void *arg)
-{
- struct monitoring *data = arg;
- if (signum != 0)
- afb_req_fail_f(data->req, "aborted", "signal %s(%d) caught", strsignal(signum), signum);
- else
- data->action(data->req);
-}
-
-static void call_check(struct afb_req req, struct afb_context *context, const struct afb_verb_desc_v1 *verb)
-{
- struct monitoring data;
-
- int stag = (int)verb->session;
-
- if ((stag & (AFB_SESSION_CREATE|AFB_SESSION_CLOSE|AFB_SESSION_RENEW|AFB_SESSION_CHECK|AFB_SESSION_LOA_EQ)) != 0) {
- if (!afb_context_check(context)) {
- afb_context_close(context);
- afb_req_fail(req, "failed", "invalid token's identity");
- return;
- }
- }
-
- if ((stag & AFB_SESSION_CREATE) != 0) {
- if (afb_context_check_loa(context, 1)) {
- afb_req_fail(req, "failed", "invalid creation state");
- return;
- }
- afb_context_change_loa(context, 1);
- afb_context_refresh(context);
- }
-
- if ((stag & (AFB_SESSION_CREATE | AFB_SESSION_RENEW)) != 0)
- afb_context_refresh(context);
-
- if ((stag & AFB_SESSION_CLOSE) != 0) {
- afb_context_change_loa(context, 0);
- afb_context_close(context);