BUG/MEDIUM: lua: sockets don't have buffer to write data

When we try to write data in a session from another session, the "req"
buffer is not allowed. This patch try to allocate the buffer. The session
wait if the buffer is not yet avalaible.
This commit is contained in:
Thierry FOURNIER 2015-03-09 17:51:43 +01:00 committed by Willy Tarreau
parent e83766afd1
commit 486d52a2a3

View File

@ -1368,6 +1368,16 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext
if (sent >= buf_len)
return 1; /* Implicitly return the length sent. */
/* Check if the buffer is avalaible because HAProxy doesn't allocate
* the request buffer if its not required.
*/
if (socket->s->req->buf->size == 0) {
if (!session_alloc_recv_buffer(socket->s, &socket->s->req->buf)) {
socket->s->req->prod->flags |= SI_FL_WAIT_ROOM;
goto hlua_socket_write_yield_return;
}
}
/* Check for avalaible space. */
len = buffer_total_space(socket->s->si[0].ib->buf);
if (len <= 0)