Software / code / prosody
Annotate
util-src/time.c @ 11381:8603011e51fe 0.11
mod_http: Skip IP resolution in non-proxied case
Skips doing the whole get_ip_from_request() dance if the request isn't
from a proxy at all, even if the client sent the header for some reason.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 18 Feb 2021 12:00:00 +0100 |
| parent | 9164:35807f02bdc7 |
| child | 9680:a374905e99ff |
| rev | line source |
|---|---|
|
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
1 #ifndef _POSIX_C_SOURCE |
| 9162 | 2 #define _POSIX_C_SOURCE 199309L |
|
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
3 #endif |
| 9162 | 4 |
| 5 #include <time.h> | |
| 6 #include <lua.h> | |
| 7 | |
| 8 lua_Number tv2number(struct timespec *tv) { | |
| 9 return tv->tv_sec + tv->tv_nsec * 1e-9; | |
| 10 } | |
| 11 | |
| 12 int lc_time_realtime(lua_State *L) { | |
| 13 struct timespec t; | |
| 14 clock_gettime(CLOCK_REALTIME, &t); | |
| 15 lua_pushnumber(L, tv2number(&t)); | |
| 16 return 1; | |
| 17 } | |
| 18 | |
| 9163 | 19 int lc_time_monotonic(lua_State *L) { |
| 20 struct timespec t; | |
| 21 clock_gettime(CLOCK_MONOTONIC, &t); | |
| 22 lua_pushnumber(L, tv2number(&t)); | |
| 23 return 1; | |
| 24 } | |
| 25 | |
| 9162 | 26 int luaopen_util_time(lua_State *L) { |
| 27 lua_createtable(L, 0, 2); | |
| 28 { | |
| 29 lua_pushcfunction(L, lc_time_realtime); | |
| 30 lua_setfield(L, -2, "now"); | |
| 9163 | 31 lua_pushcfunction(L, lc_time_monotonic); |
| 32 lua_setfield(L, -2, "monotonic"); | |
| 9162 | 33 } |
| 34 return 1; | |
| 35 } |