From 506e46c3520beeec1e00e0563f348f65adc28efe Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Wed, 4 Mar 2015 11:44:47 +0100 Subject: [PATCH] BUG/MAJOR: lua: send function fails and return bad bytes In some cases the Lua "send" function fails. This is caused by the return of "buffer_replace2()" is not tested. I checked avalaible space in the buffer and I supposed than "buffer_replace2()" took all the data. In some cases, "buffer_replace2()" cannot take the incoming data, it returns the amount of data copied. This patch check the amount of data really copied by "buffer_replace2()" and advance the buffer with taking this value in account. --- src/hlua.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hlua.c b/src/hlua.c index 1df18b66a..d3f302f0b 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2091,7 +2091,7 @@ __LJMP static int _hlua_channel_send(lua_State *L) if (max > len - l) max = len - l; - buffer_replace2(chn->chn->buf, chn->chn->buf->p, chn->chn->buf->p, str+l, max); + max = buffer_replace2(chn->chn->buf, chn->chn->buf->p, chn->chn->buf->p, str+l, max); /* buffer replace considers that the input part is filled. * so, I must forward these new data in the output part. */