Hi, I’m not sure about your patch because the values in the stack are kept. I need to be focus to read it, and unfortunately I’m very busy. I try to check this morning, during the french strikes...
Thierry > On 25 Apr 2018, at 20:26, Sadasiva Gujjarlapudi <[email protected]> > wrote: > > cc: Haproxy > > `hlua_socket_close` expected exactly one argument on stack. > But when it was called from `hlua_socket_write_yield`, it found more than one > argument on stack and threw an error. > > This patch introduced new helper function `hlua_socket_close_helper`, which > doesn't check arguments count. > Please let me know if you need more information. > > Thanks, > Sada. > > > On Wed, Apr 25, 2018 at 10:51 AM, Thierry Fournier <[email protected]> > wrote: > Hi, > > do you have a little bit of context. It is not easy to read a patch without > the associated explanation. > > Thanks, > Thierry > > > >> On 14 Apr 2018, at 01:56, sada <[email protected]> wrote: >> >> --- >> src/hlua.c | 14 ++++++++++---- >> 1 file changed, 10 insertions(+), 4 deletions(-) >> >> diff --git a/src/hlua.c b/src/hlua.c >> index 60cf8f94..0585a1e7 100644 >> --- a/src/hlua.c >> +++ b/src/hlua.c >> @@ -1629,14 +1629,12 @@ __LJMP static int hlua_socket_gc(lua_State *L) >> /* The close function send shutdown signal and break the >> * links between the stream and the object. >> */ >> -__LJMP static int hlua_socket_close(lua_State *L) >> +__LJMP static int hlua_socket_close_helper(lua_State *L) >> { >> struct hlua_socket *socket; >> struct appctx *appctx; >> struct xref *peer; >> >> - MAY_LJMP(check_args(L, 1, "close")); >> - >> socket = MAY_LJMP(hlua_checksocket(L, 1)); >> >> /* Check if we run on the same thread than the xreator thread. >> @@ -1659,6 +1657,14 @@ __LJMP static int hlua_socket_close(lua_State *L) >> return 0; >> } >> >> +/* The close function calls close_helper. >> + */ >> +__LJMP static int hlua_socket_close(lua_State *L) >> +{ >> + MAY_LJMP(check_args(L, 1, "close")); >> + return hlua_socket_close_helper(L); >> +} >> + >> /* This Lua function assumes that the stack contain three parameters. >> * 1 - USERDATA containing a struct socket >> * 2 - INTEGER with values of the macro defined below >> @@ -1990,7 +1996,7 @@ static int hlua_socket_write_yield(struct lua_State >> *L,int status, lua_KContext >> if (len == -1) >> s->req.flags |= CF_WAKE_WRITE; >> >> - MAY_LJMP(hlua_socket_close(L)); >> + MAY_LJMP(hlua_socket_close_helper(L)); >> lua_pop(L, 1); >> lua_pushinteger(L, -1); >> xref_unlock(&socket->xref, peer); >> -- >> 2.17.0 >> > >

