From: Willy Tarreau Date: Tue, 10 Dec 2013 17:58:23 +0000 (+0100) Subject: BUG/MEDIUM: channel: bo_getline() must wait for \n until buffer is full X-Git-Tag: v1.5-dev20~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=82de2b644e7973d93f472d12e4f2f619a7f0706e;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: channel: bo_getline() must wait for \n until buffer is full We must not report incomplete data if the buffer is not full, otherwise we can abort some processing on the stats socket when dealing with massive amounts of commands. --- diff --git a/src/channel.c b/src/channel.c index 3e2a3f35f3..2942d9241d 100644 --- a/src/channel.c +++ b/src/channel.c @@ -230,7 +230,8 @@ int bo_getline(struct channel *chn, char *str, int len) break; p = buffer_wrap_add(chn->buf, p + 1); } - if (ret > 0 && ret < len && ret < chn->buf->o && + if (ret > 0 && ret < len && + (ret < chn->buf->o || !channel_full(chn)) && *(str-1) != '\n' && !(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) ret = 0;