BUG/MINOR: checks: prevent http keep-alive with http-check expect

Sébastien Rohaut reported that string negation in http-check expect didn't
work as expected.

The misbehaviour is caused by responses with HTTP keep-alive. When the
condition is not met, haproxy awaits more data until the buffer is full or the
connection is closed, resulting in a check timeout when "timeout check" is
lower than the keep-alive timeout on the server side.

In order to avoid the issue, when a "http-check expect" is used, haproxy will
ask the server to disable keep-alive by automatically appending a
"Connection: close" header to the request.
(cherry picked from commit 32602d23610981b48143d1f82885b8cfae286e0f)
diff --git a/src/checks.c b/src/checks.c
index f6afe42..b9048da 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -1407,6 +1407,9 @@
 		else if ((check->type) == PR_O2_HTTP_CHK) {
 			if (s->proxy->options2 & PR_O2_CHK_SNDST)
 				bo_putblk(check->bo, trash.str, httpchk_build_status_header(s, trash.str, trash.size));
+			/* prevent HTTP keep-alive when "http-check expect" is used */
+			if (s->proxy->options2 & PR_O2_EXP_TYPE)
+				bo_putstr(check->bo, "Connection: close\r\n");
 			bo_putstr(check->bo, "\r\n");
 			*check->bo->p = '\0'; /* to make gdb output easier to read */
 		}