From: Thierry FOURNIER Date: Mon, 9 Mar 2015 16:51:43 +0000 (+0100) Subject: BUG/MEDIUM: lua: sockets don't have buffer to write data X-Git-Tag: v1.6-dev1~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=486d52a2a30e64a6709cf6ffbb9d6d4d9286076b;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/hlua.c b/src/hlua.c index 8ddc0b664d..73bd94c2ac 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)