mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-20 04:37:04 +00:00
BUG/MINOR: hlua: return wall-clock date, not internal date in core.now()
That's hopefully the last one affected by this. It was a bit trickier
because there's the promise in the doc that the date is monotonous, so
we continue to use now-start_time as the uptime value and add it to
start_date to get the current date. It was also emphasized by commit
28360dc
("MEDIUM: clock: force internal time to wrap early after boot"),
causing core.now() to return a date of Mar 20 on Apr 27. No backport is
needed.
This commit is contained in:
parent
bc3c4e85f0
commit
d2f61de8c2
@ -300,12 +300,20 @@ void *hlua_checkudata(lua_State *L, int ud, int class_ref)
|
||||
/* This function return the current date at epoch format in milliseconds. */
|
||||
int hlua_now(lua_State *L)
|
||||
{
|
||||
/* WT: the doc says "returns the current time" and later says that it's
|
||||
* monotonic. So the best fit is to use start_date+(now-start_time).
|
||||
*/
|
||||
struct timeval tv;
|
||||
|
||||
tv_remain(&start_time, &now, &tv);
|
||||
tv_add(&tv, &tv, &start_date);
|
||||
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "sec");
|
||||
lua_pushinteger(L, now.tv_sec);
|
||||
lua_pushinteger(L, tv.tv_sec);
|
||||
lua_rawset(L, -3);
|
||||
lua_pushstring(L, "usec");
|
||||
lua_pushinteger(L, now.tv_usec);
|
||||
lua_pushinteger(L, tv.tv_usec);
|
||||
lua_rawset(L, -3);
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user