Mercurial > prosody-hg
view util-src/time.c @ 13932:334fb7adb0bc 13.0
net.server_epoll: Restore idle checks after pause (e.g. rate limits)
It seems that under some conditions the read timeout is not recreated.
This led to various dead connection accumulating.
Code review noticed this case, easily triggered by enabling rate limits.
Uncertain if there may be others.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 24 Aug 2025 18:15:09 +0200 |
| parents | a187600ec7d6 |
| children | 973609bad40a |
line wrap: on
line source
#ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L #endif #include <time.h> #include <lua.h> static lua_Number tv2number(struct timespec *tv) { return tv->tv_sec + tv->tv_nsec * 1e-9; } static int lc_time_realtime(lua_State *L) { struct timespec t; clock_gettime(CLOCK_REALTIME, &t); lua_pushnumber(L, tv2number(&t)); return 1; } static int lc_time_monotonic(lua_State *L) { struct timespec t; clock_gettime(CLOCK_MONOTONIC, &t); lua_pushnumber(L, tv2number(&t)); return 1; } int luaopen_prosody_util_time(lua_State *L) { lua_createtable(L, 0, 2); { lua_pushcfunction(L, lc_time_realtime); lua_setfield(L, -2, "now"); lua_pushcfunction(L, lc_time_monotonic); lua_setfield(L, -2, "monotonic"); } return 1; } int luaopen_util_time(lua_State *L) { return luaopen_prosody_util_time(L); }
