MINOR: h1: make h1_parse_chunk_size() not depend on b_ptr() anymore
It's similar to the previous commit so that the function doesn't rely
on buf->p anymore.
diff --git a/include/proto/h1.h b/include/proto/h1.h
index d8b90cb..b0051e3 100644
--- a/include/proto/h1.h
+++ b/include/proto/h1.h
@@ -175,7 +175,8 @@
return bytes;
}
-/* Parse the chunk size start at buf->p + start and stops before buf->p + stop.
+/* Parse the chunk size start at buf + start and stops before buf + stop. The
+ * positions are relative to the buffer's head.
* It returns the chunk size in <res> and the amount of bytes read this way :
* < 0 : error at this position relative to <stop>
* = 0 : not enough bytes to read a complete chunk size
@@ -189,9 +190,9 @@
*/
static inline int h1_parse_chunk_size(const struct buffer *buf, int start, int stop, unsigned int *res)
{
- const char *ptr = b_ptr(buf, start);
+ const char *ptr = b_peek(buf, start);
const char *ptr_old = ptr;
- const char *end = buf->data + buf->size;
+ const char *end = b_wrap(buf);
unsigned int chunk = 0;
stop -= start; // bytes left
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 98c97d8..e75a2ba 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -3197,8 +3197,7 @@
if (h1m->state == HTTP_MSG_CHUNK_SIZE) {
unsigned int chunk;
- // FIXME: this one still uses the old buffer API and ignores <ofs>
- ret = h1_parse_chunk_size(buf, -max, 0, &chunk);
+ ret = h1_parse_chunk_size(buf, ofs, ofs + max, &chunk);
if (!ret)
goto end;
diff --git a/src/proto_http.c b/src/proto_http.c
index 3904b63..78e0bad 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -4142,7 +4142,7 @@
* TRAILERS state.
*/
unsigned int chunk;
- int ret = h1_parse_chunk_size(req->buf, msg->next, req->buf->i, &chunk);
+ int ret = h1_parse_chunk_size(req->buf, co_data(req) + msg->next, b_data(req->buf), &chunk);
if (!ret)
goto missing_data;
@@ -6371,7 +6371,7 @@
* then set ->next to point to the body and switch to
* DATA or TRAILERS state.
*/
- ret = h1_parse_chunk_size(chn->buf, msg->next, chn->buf->i, &chunk);
+ ret = h1_parse_chunk_size(chn->buf, co_data(chn) + msg->next, b_data(chn->buf), &chunk);
if (ret == 0)
goto missing_data_or_waiting;
if (ret < 0) {