]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: lua: set buffer if it is nnot avalaible.
authorThierry FOURNIER <tfournier@exceliance.fr>
Thu, 5 Mar 2015 16:06:12 +0000 (17:06 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 9 Mar 2015 16:47:52 +0000 (17:47 +0100)
Check if the buffer is avalaible because HAProxy doesn't allocate
the request buffer if its not required. Sometimes, the Lua need to
write some data to the server before that the client send his data.

src/hlua.c

index 073c4086a29d336a451a6e04329a74b13d15c283..cc88bd1a59493e115b8caedab21995fe0c858887 100644 (file)
@@ -2195,6 +2195,16 @@ __LJMP static int _hlua_channel_send(lua_State *L)
                return 1;
        }
 
+       /* Check if the buffer is avalaible because HAProxy doesn't allocate
+        * the request buffer if its not required.
+        */
+       if (chn->chn->buf->size == 0) {
+               if (!session_alloc_recv_buffer(chn->s, &chn->chn->buf)) {
+                       chn->chn->prod->flags |= SI_FL_WAIT_ROOM;
+                       WILL_LJMP(hlua_yieldk(L, 0, 0, _hlua_channel_send, TICK_ETERNITY, 0));
+               }
+       }
+
        max = channel_recv_limit(chn->chn) - buffer_len(chn->chn->buf);
        if (max > len - l)
                max = len - l;