From: Thierry FOURNIER Date: Sun, 9 Aug 2015 11:10:24 +0000 (+0200) Subject: BUG/MEDIUM: lua: timeout error with converters, wrapper and actions. X-Git-Tag: v1.6-dev4~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61e96c68b9f6d5da7afd7b405d54cb3812e91593;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: lua: timeout error with converters, wrapper and actions. test conf: global tune.lua.session-timeout 0 lua-load lol.lua debug maxconn 4096 listen test bind 0.0.0.0:10010 mode tcp tcp-request content lua act_test balance roundrobin server test 127.0.0.1:3304 lua test: function act_test(txn) while true do core.Alert("TEST") end end The function "act_test()" is not executed because a zero timeout is not considered as TICK_ETERNITY, but is considered as 0. This path fix this behavior. This is the same problem than the bugfix 685c014e99195d60db0a9cdbc6483f9c44fd0a67. --- diff --git a/src/hlua.c b/src/hlua.c index 8e92134535..f2e58a9047 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -3944,7 +3944,7 @@ static int hlua_sample_conv_wrapper(const struct arg *arg_p, struct sample *smp, } /* We must initialize the execution timeouts. */ - stream->hlua.expire = tick_add(now_ms, hlua_timeout_session); + stream->hlua.expire = tick_add_ifset(now_ms, hlua_timeout_session); /* Set the currently running flag. */ HLUA_SET_RUN(&stream->hlua); @@ -4050,7 +4050,7 @@ static int hlua_sample_fetch_wrapper(const struct arg *arg_p, struct sample *smp } /* We must initialize the execution timeouts. */ - stream->hlua.expire = tick_add(now_ms, hlua_timeout_session); + stream->hlua.expire = tick_add_ifset(now_ms, hlua_timeout_session); /* Set the currently running flag. */ HLUA_SET_RUN(&stream->hlua); @@ -4322,7 +4322,7 @@ static int hlua_request_act_wrapper(struct hlua_rule *rule, struct proxy *px, } /* We must initialize the execution timeouts. */ - s->hlua.expire = tick_add(now_ms, hlua_timeout_session); + s->hlua.expire = tick_add_ifset(now_ms, hlua_timeout_session); /* Set the currently running flag. */ HLUA_SET_RUN(&s->hlua);