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.
This commit is contained in:
Willy Tarreau 2018-06-14 15:59:05 +02:00
parent c0973c6742
commit 84d6b7af87
3 changed files with 7 additions and 7 deletions

View File

@ -175,7 +175,8 @@ static inline int h1_skip_chunk_crlf(const struct buffer *buf, int start, int st
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_skip_chunk_crlf(const struct buffer *buf, int start, int st
*/
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

View File

@ -3197,8 +3197,7 @@ static size_t h2s_frt_make_resp_data(struct h2s *h2s, struct buffer *buf, size_t
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;

View File

@ -4142,7 +4142,7 @@ int http_wait_for_request_body(struct stream *s, struct channel *req, int an_bit
* 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 @@ http_msg_forward_chunked_body(struct stream *s, struct http_msg *msg)
* 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) {