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
>> 
> 
> 


Reply via email to