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.
This commit is contained in:
Thierry FOURNIER 2015-03-04 11:44:47 +01:00 committed by Willy Tarreau
parent d1039e5dc5
commit 506e46c352

View File

@ -2091,7 +2091,7 @@ __LJMP static int _hlua_channel_send(lua_State *L)
if (max > len - l) if (max > len - l)
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. /* buffer replace considers that the input part is filled.
* so, I must forward these new data in the output part. * so, I must forward these new data in the output part.
*/ */