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 8ddc0b6..73bd94c 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -1368,6 +1368,16 @@
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)