afb-session: Use clock insensitive to time changes
[src/app-framework-binder.git] / 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])
 {