MINOR: h1: make h1_measure_trailers() take the byte count in argument

The principle is that it should not have to take this value from the
buffer itself anymore.
diff --git a/include/proto/h1.h b/include/proto/h1.h
index ada7d03..05d1877 100644
--- a/include/proto/h1.h
+++ b/include/proto/h1.h
@@ -43,7 +43,7 @@
 int h1_headers_to_hdr_list(char *start, const char *stop,
                            struct http_hdr *hdr, unsigned int hdr_num,
                            struct h1m *h1m);
-int h1_measure_trailers(const struct buffer *buf);
+int h1_measure_trailers(const struct buffer *buf, unsigned int max);
 
 #define H1_FLG_CTL  0x01
 #define H1_FLG_SEP  0x02
diff --git a/src/h1.c b/src/h1.c
index f070116..4361809 100644
--- a/src/h1.c
+++ b/src/h1.c
@@ -1209,21 +1209,20 @@
 }
 
 /* This function performs a very minimal parsing of the trailers block present
- * in the output part of <buf>, and returns the number of bytes to delete to
- * skip the trailers. It may return 0 if it's missing some input data, or < 0
- * in case of parse error (in which case the caller may have to decide how to
- * proceed, possibly eating everything).
+ * in the output part of <buf> for up to <max> bytes, and returns the number of
+ * bytes to delete to skip the trailers. It may return 0 if it's missing some
+ * input data, or < 0 in case of parse error (in which case the caller may have
+ * to decide how to proceed, possibly eating everything).
  */
-int h1_measure_trailers(const struct buffer *buf)
+int h1_measure_trailers(const struct buffer *buf, unsigned int max)
 {
 	int count = 0;
 
 	while (1) {
 		const char *p1 = NULL, *p2 = NULL;
-		const char *start = b_ptr(buf, (int)(count - buf->o));
-		const char *stop  = b_peek(buf, buf->o);
+		const char *start = b_peek(buf, count);
+		const char *stop  = b_peek(buf, max);
 		const char *ptr   = start;
-		int bytes = 0;
 
 		/* scan current line and stop at LF or CRLF */
 		while (1) {
@@ -1243,21 +1242,12 @@
 				p1 = ptr;
 			}
 
-			ptr++;
-			if (ptr >= buf->data + buf->size)
-				ptr = buf->data;
+			ptr = b_next(buf, ptr);
 		}
 
 		/* after LF; point to beginning of next line */
-		p2++;
-		if (p2 >= buf->data + buf->size)
-			p2 = buf->data;
-
-		bytes = p2 - start;
-		if (bytes < 0)
-			bytes += buf->size;
-
-		count += bytes;
+		p2 = b_next(buf, p2);
+		count += b_dist(buf, start, p2);
 
 		/* LF/CRLF at beginning of line => end of trailers at p2.
 		 * Everything was scheduled for forwarding, there's nothing left
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 9b4dcd5..beb7dca 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -3391,7 +3391,7 @@
 		}
 		else if (h2s->res.state == HTTP_MSG_TRAILERS) {
 			/* consume the trailers if any (we don't forward them for now) */
-			int count = h1_measure_trailers(buf);
+			int count = h1_measure_trailers(buf, buf->o);
 
 			if (unlikely(count <= 0)) {
 				if (count < 0)