afb-session: Use clock insensitive to time changes
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 15 Feb 2018 15:23:54 +0000 (16:23 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 15 Feb 2018 16:30:41 +0000 (17:30 +0100)
Bug-AGL: SPEC-1296
Bug-AGL: SPEC-1293

Change-Id: I77ccb79975c6f2ac1a276031d9fd1c03839c3b91
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-session.c

index 6b6ad63..01e9bfc 100644 (file)
@@ -39,7 +39,7 @@
 #define _MAXEXP_       ((time_t)(~(time_t)0))
 #define _MAXEXP2_      ((time_t)((((unsigned long long)_MAXEXP_) >> 1)))
 #define MAX_EXPIRATION (_MAXEXP_ >= 0 ? _MAXEXP_ : _MAXEXP2_)
-#define NOW            (time(NULL))
+#define NOW            (time_now())
 
 struct cookie
 {
@@ -73,6 +73,14 @@ static struct {
        char initok[SIZEUUID];
 } sessions;
 
+/* Get the actual raw time */
+static inline time_t time_now()
+{
+       struct timespec ts;
+       clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+       return ts.tv_sec;
+}
+
 /* generate a uuid */
 static void new_uuid(char uuid[SIZEUUID])
 {