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.
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. */