diff options
author | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2005-11-09 10:03:50 +0000 |
---|---|---|
committer | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2005-11-09 10:03:50 +0000 |
commit | ba2ebecbedee53f00575b607e0a6c873b97ca4d1 (patch) | |
tree | ea75194afca59713e2f0ad866a76a909f467af74 | |
parent | updated version number to 2.1_beta7 (diff) | |
download | openvpn-ba2ebecbedee53f00575b607e0a6c873b97ca4d1.tar.xz |
Fixed update_time to use a better algorithm for
preventing time backtracks even if the system
clock backtracks.
git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@789 e7ae566f-a301-0410-adde-c780ea21d3b5
-rw-r--r-- | otime.c | 1 | ||||
-rw-r--r-- | otime.h | 5 |
2 files changed, 5 insertions, 1 deletions
@@ -35,6 +35,7 @@ #include "memdbg.h" volatile time_t now; /* GLOBAL */ +unsigned int now_adj = 0; /* GLOBAL */ /* * Return a numerical string describing a struct timeval. @@ -55,13 +55,16 @@ const char *tv_string (const struct timeval *tv, struct gc_arena *gc); const char *tv_string_abs (const struct timeval *tv, struct gc_arena *gc); extern volatile time_t now; /* updated frequently to time(NULL) */ +extern unsigned int now_adj; static inline void update_time (void) { - const time_t real_time = time (NULL); + const time_t real_time = time (NULL) + now_adj; if (real_time > now) now = real_time; + else if (real_time < now) + now_adj += (now - real_time); } static inline void |