From: Thierry FOURNIER Date: Mon, 9 Mar 2015 17:12:40 +0000 (+0100) Subject: BUG/MEDIUM: lua: cannot connect socket X-Git-Tag: v1.6-dev1~49 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95ad96a7ea06b4da01e9f2c05ee350602d1662b9;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: lua: cannot connect socket The Lua stack is not waked up when the connect() receive a positive or negatibe response. This patch adds a signal to wake up the Lua stack. --- diff --git a/src/hlua.c b/src/hlua.c index 73bd94c2ac..260646bc94 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -1658,6 +1658,8 @@ __LJMP static int hlua_socket_connect(struct lua_State *L) int port; const char *ip; struct connection *conn; + struct hlua *hlua; + struct appctx *appctx; MAY_LJMP(check_args(L, 3, "connect")); @@ -1687,6 +1689,10 @@ __LJMP static int hlua_socket_connect(struct lua_State *L) */ task_wakeup(socket->s->task, TASK_WOKEN_INIT); + hlua = hlua_gethlua(L); + appctx = objt_appctx(socket->s->si[0].end); + if (!hlua_com_new(hlua, &appctx->ctx.hlua.wake_on_write)) + WILL_LJMP(luaL_error(L, "out of memory")); WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_connect_yield, TICK_ETERNITY, 0)); return 0;