From: Willy Tarreau Date: Wed, 11 Dec 2013 20:40:11 +0000 (+0100) Subject: BUG/MEDIUM: checks: agent doesn't get the response if server does not closes X-Git-Tag: v1.5-dev20~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9809b78ed9259c56b4a1932e6d2967960a7fcc20;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: checks: agent doesn't get the response if server does not closes The agent refrains from reading the server's response until the server closes, but if the server waits for the client to close, the response is never read. Let's try to fetch a whole line before deciding to wait more. --- diff --git a/src/checks.c b/src/checks.c index 3b4e917acb..4af3db7261 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1138,11 +1138,22 @@ static void event_srv_chk_r(struct connection *conn) const char *desc = "Unknown feedback string"; const char *down_cmd = NULL; int disabled; + char *p; - if (!done) - goto wait_more_data; + /* get a complete line first */ + p = check->bi->data; + while (*p && *p != '\n' && *p != '\r') + p++; + + if (!*p) { + if (!done) + goto wait_more_data; - cut_crlf(check->bi->data); + /* at least inform the admin that the agent is mis-behaving */ + set_server_check_status(check, check->status, "Ignoring incomplete line from agent"); + break; + } + *p = 0; /* * The agent may have been disabled after a check was