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
*/
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
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;
* 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;
* 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) {