mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-20 00:10:41 -05:00
BUG/MEDIUM: lua: outgoing connection was broken since 1.6-dev2 (bis)
See commit id bdc97a8795
Michael Ezzell reported that the following Lua code fails in
dev4 when the TCP is not established immediately (due to a little
bit of latency):
function tricky_socket()
local sock = core.tcp();
sock:settimeout(3);
core.log(core.alert,"calling connect()\n");
local connected, con_err = sock:connect("x.x.x.x",80);
core.log(core.alert,"returned from connect()\n");
if con_err ~= nil then
core.log(core.alert,"connect() failed with error: '" .. con_err .. "'\n");
end
The problem is that the flags who want to wake up the applet are
resetted before each applet call, so the applet must set again the
flags if the connection is not established.
This commit is contained in:
parent
b7ce424be2
commit
316e319628
1 changed files with 7 additions and 1 deletions
|
|
@ -1461,8 +1461,14 @@ static void hlua_socket_handler(struct appctx *appctx)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!(c->flags & CO_FL_CONNECTED))
|
||||
/* if the connection is not estabkished, inform the stream that we want
|
||||
* to be notified whenever the connection completes.
|
||||
*/
|
||||
if (!(c->flags & CO_FL_CONNECTED)) {
|
||||
si_applet_cant_get(si);
|
||||
si_applet_cant_put(si);
|
||||
return;
|
||||
}
|
||||
|
||||
/* This function is called after the connect. */
|
||||
appctx->ctx.hlua.connected = 1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue