From: Thierry FOURNIER Date: Wed, 4 Mar 2015 10:44:47 +0000 (+0100) Subject: BUG/MAJOR: lua: send function fails and return bad bytes X-Git-Tag: v1.6-dev1~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=506e46c3520beeec1e00e0563f348f65adc28efe;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/hlua.c b/src/hlua.c index 1df18b66ad..d3f302f0b9 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. */