aboutsummaryrefslogtreecommitdiffstats
path: root/src/afb-context.c
diff options
context:
space:
mode:
authorJose Bollo <jose.bollo@iot.bzh>2019-11-15 16:21:03 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2019-11-29 12:48:17 +0100
commitb4da3b7f3db2211e7ecca74301e26b3089fda5a2 (patch)
treedaa23ed28c907b563c3bb13a246a1b0b1de5ca74 /src/afb-context.c
parente08d57c0e397018f0c463a66adc232f6358caef5 (diff)
Move tokens from sessions to requests
Tokens are no more related to sessions. Each request provides a token. In the case of websockets or connected link, the context can record the token. Bug-AGL: SPEC-2968 Change-Id: I1442b0422584c5a5b860ddb826518b0e673612f9 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-context.c')
-rw-r--r--src/afb-context.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/afb-context.c b/src/afb-context.c
index 8a1938a1..4cc2e551 100644
--- a/src/afb-context.c
+++ b/src/afb-context.c
@@ -25,8 +25,9 @@
#include "afb-session.h"
#include "afb-context.h"
+#include "afb-token.h"
-static void init_context(struct afb_context *context, struct afb_session *session, const char *token)
+static void init_context(struct afb_context *context, struct afb_session *session, struct afb_token *token)
{
assert(session != NULL);
@@ -35,17 +36,18 @@ static void init_context(struct afb_context *context, struct afb_session *sessio
context->flags = 0;
context->super = NULL;
context->api_key = NULL;
+ context->token = afb_token_addref(token);
/* check the token */
if (token != NULL) {
- if (afb_session_check_token(session, token))
+ if (afb_token_check(token))
context->validated = 1;
else
context->invalidated = 1;
}
}
-void afb_context_init(struct afb_context *context, struct afb_session *session, const char *token)
+void afb_context_init(struct afb_context *context, struct afb_session *session, struct afb_token *token)
{
init_context(context, afb_session_addref(session), token);
}
@@ -62,11 +64,11 @@ void afb_context_subinit(struct afb_context *context, struct afb_context *super)
context->flags = 0;
context->super = super;
context->api_key = NULL;
- context->token = NULL;
+ context->token = super->token;
context->validated = super->validated;
}
-int afb_context_connect(struct afb_context *context, const char *uuid, const char *token)
+int afb_context_connect(struct afb_context *context, const char *uuid, struct afb_token *token)
{
int created;
struct afb_session *session;
@@ -97,6 +99,7 @@ void afb_context_disconnect(struct afb_context *context)
afb_context_set(context, NULL, NULL);
context->closed = 1;
}
+ afb_token_unref(context->token);
afb_session_unref(context->session);
context->session = NULL;
}