From 7bb634549794298fc701d33efd93c7289dcf9cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Bont=C3=A9?= Date: Fri, 17 Aug 2018 23:51:02 +0200 Subject: [PATCH] BUG/MEDIUM: lua: socket timeouts are not applied Sachin Shetty reported that socket timeouts set in LUA code have no effect. Indeed, connect timeout is never modified and is always set to its default, set to 5 seconds. Currently, this patch will apply the specified timeout value to the connect timeout. For the read and write timeouts, the issue is that the timeout is updated but the expiration dates were not updated. This patch should be backported up to the 1.6 branch. --- src/hlua.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/hlua.c b/src/hlua.c index c29a7cc4e..06c115561 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2574,10 +2574,19 @@ __LJMP static int hlua_socket_settimeout(struct lua_State *L) si = appctx->owner; s = si_strm(si); + s->sess->fe->timeout.connect = tmout; s->req.rto = tmout; s->req.wto = tmout; s->res.rto = tmout; s->res.wto = tmout; + s->req.rex = tick_add_ifset(now_ms, tmout); + s->req.wex = tick_add_ifset(now_ms, tmout); + s->res.rex = tick_add_ifset(now_ms, tmout); + s->res.wex = tick_add_ifset(now_ms, tmout); + + s->task->expire = tick_add_ifset(now_ms, tmout); + task_queue(s->task); + xref_unlock(&socket->xref, peer); lua_pushinteger(L, 1);