diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-11-06 15:05:45 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-11-06 15:06:55 +0100 |
commit | 541756a5f6af26338add0b1ac7a1c0c3bb518b80 (patch) | |
tree | 56b0e931c4ba14f2541f51432d9cadc132f7eabd /src/afb-session.c | |
parent | e106c1b5e5c4a27d6907f8f1dc55443506135072 (diff) |
afb-session: add function afb_session_search
Also the function afb_session_get always create
a session even if 'created' is NULL
Change-Id: Ia5ac1231e1d61e92cb9bbc07c968e3000d6864ff
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-session.c')
-rw-r--r-- | src/afb-session.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/afb-session.c b/src/afb-session.c index e1d5a458..a28a35f6 100644 --- a/src/afb-session.c +++ b/src/afb-session.c @@ -284,6 +284,7 @@ error: return NULL; } +/* Creates a new session with 'timeout' */ struct afb_session *afb_session_create (int timeout) { time_t now; @@ -295,7 +296,19 @@ struct afb_session *afb_session_create (int timeout) return make_session(NULL, timeout, now); } -// This function will return exiting session or newly created session +/* Searchs the session of 'uuid' */ +struct afb_session *afb_session_search (const char *uuid) +{ + time_t now; + + /* cleaning */ + now = NOW; + cleanup (now); + return search(uuid); + +} + +/* This function will return exiting session or newly created session */ struct afb_session *afb_session_get (const char *uuid, int *created) { struct afb_session *session; @@ -308,20 +321,21 @@ struct afb_session *afb_session_get (const char *uuid, int *created) /* search for an existing one not too old */ if (uuid != NULL) { session = search(uuid); - if (!created) - return session; if (session != NULL) { - *created = 0; + if (created) + *created = 0; session->access = now; session->refcount++; return session; } } + /* no existing session found, create it */ + session = make_session(uuid, sessions.timeout, now); if (created) - *created = 1; + *created = !!session; - return make_session(uuid, sessions.timeout, now); + return session; } struct afb_session *afb_session_addref(struct afb_session *session) |