mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-13 09:11:06 +00:00
BUG/MEDIUM: lua: Reset analyse expiration timeout before executing a lua action
Before executing a lua action, the analyse expiration timeout of the corresponding channel must be reset. Otherwise, when it expires, for instance because of a call to core.msleep(), if the action yields, an expired timeout will be used for the stream's task, leading to a loop. This patch should fix the issue #661. It must be backported in all versions supporting the lua.
This commit is contained in:
parent
89aed32bff
commit
23308ebf0d
@ -6618,6 +6618,15 @@ static enum act_return hlua_action(struct act_rule *rule, struct proxy *px,
|
||||
s->hlua->max_time = hlua_timeout_session;
|
||||
}
|
||||
|
||||
/* Always reset the analyse expiration timeout for the corresponding
|
||||
* channel in case the lua script yield, to be sure to not keep an
|
||||
* expired timeout.
|
||||
*/
|
||||
if (dir == SMP_OPT_DIR_REQ)
|
||||
s->req.analyse_exp = TICK_ETERNITY;
|
||||
else
|
||||
s->res.analyse_exp = TICK_ETERNITY;
|
||||
|
||||
/* Execute the function. */
|
||||
switch (hlua_ctx_resume(s->hlua, !(flags & ACT_OPT_FINAL))) {
|
||||
/* finished. */
|
||||
|
Loading…
Reference in New Issue
Block a user