diff --git a/src/proto_http.c b/src/proto_http.c
index 859e69b..caa56c4 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -946,7 +946,7 @@
 		for (cur_hdr = 0; cur_hdr < t->fi->nb_reqadd; cur_hdr++) {
 			int len = sprintf(trash, "%s\r\n", t->fi->req_add[cur_hdr]);
 			buffer_replace2(req, req->h, req->h, trash, len);
-			if (hdr_idx_add(len - 2, 1, t->hdr_idx, t->hdr_idx.tail) < 0) {
+			if (hdr_idx_add(len - 2, 1, &t->hdr_idx, t->hdr_idx.tail) < 0) {
 				t->hdr_state = HTTP_PA_ERROR;
 				break;
 			}
@@ -964,9 +964,15 @@
 				len = sprintf(trash, "X-Forwarded-For: %d.%d.%d.%d\r\n",
 					      pn[0], pn[1], pn[2], pn[3]);
 				buffer_replace2(req, req->h, req->h, trash, len);
-				if (hdr_idx_add(len - 2, 1, t->hdr_idx, t->hdr_idx.tail) < 0) {
+				if (hdr_idx_add(len - 2, 1, &t->hdr_idx, t->hdr_idx.tail) < 0) {
 					t->hdr_state = HTTP_PA_ERROR;
-					break;
+					t->logs.status = 400;
+					client_retnclose(t, t->fe->errmsg.len400, t->fe->errmsg.msg400);
+					if (!(t->flags & SN_ERR_MASK))
+						t->flags |= SN_ERR_PRXCOND;
+					if (!(t->flags & SN_FINST_MASK))
+						t->flags |= SN_FINST_R;
+					return 1;
 				}
 			}
 			else if (t->cli_addr.ss_family == AF_INET6) {
@@ -977,9 +983,15 @@
 					  pn, sizeof(pn));
 				len = sprintf(trash, "X-Forwarded-For: %s\r\n", pn);
 				buffer_replace2(req, req->h, req->h, trash, len);
-				if (hdr_idx_add(len - 2, 1, t->hdr_idx, t->hdr_idx.tail) < 0) {
+				if (hdr_idx_add(len - 2, 1, &t->hdr_idx, t->hdr_idx.tail) < 0) {
 					t->hdr_state = HTTP_PA_ERROR;
-					break;
+					t->logs.status = 400;
+					client_retnclose(t, t->fe->errmsg.len400, t->fe->errmsg.msg400);
+					if (!(t->flags & SN_ERR_MASK))
+						t->flags |= SN_ERR_PRXCOND;
+					if (!(t->flags & SN_FINST_MASK))
+						t->flags |= SN_FINST_R;
+					return 1;
 				}
 			}
 		}
@@ -992,9 +1004,15 @@
 		/* add a "connection: close" line if needed */
 		if (t->fe->options & PR_O_HTTP_CLOSE) {
 			buffer_replace2(req, req->h, req->h, "Connection: close\r\n", 19);
-			if (hdr_idx_add(17, 1, t->hdr_idx, t->hdr_idx.tail) < 0) {
+			if (hdr_idx_add(17, 1, &t->hdr_idx, t->hdr_idx.tail) < 0) {
 				t->hdr_state = HTTP_PA_ERROR;
-				break;
+				t->logs.status = 400;
+				client_retnclose(t, t->fe->errmsg.len400, t->fe->errmsg.msg400);
+				if (!(t->flags & SN_ERR_MASK))
+					t->flags |= SN_ERR_PRXCOND;
+				if (!(t->flags & SN_FINST_MASK))
+					t->flags |= SN_FINST_R;
+				return 1;
 			}
 		}
 
