From 486d52a2a30e64a6709cf6ffbb9d6d4d9286076b Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Mon, 9 Mar 2015 17:51:43 +0100 Subject: [PATCH] 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. --- src/hlua.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hlua.c b/src/hlua.c index 8ddc0b664..73bd94c2a 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -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)