--- a/src/server/daemon/httpparser.c Tue Feb 17 13:03:39 2026 +0100 +++ b/src/server/daemon/httpparser.c Tue Feb 17 17:43:10 2026 +0100 @@ -48,7 +48,7 @@ parser->start_line.ptr = (char*)netbuf->inbuf; parser->start_line.length = 0; - parser->offset = 0; + parser->line_offset = 0; return parser; } @@ -81,7 +81,7 @@ return 2; } } - + parser->line_offset = parser->netbuf->pos; parser->state++; } case 1: { @@ -119,12 +119,12 @@ while(buf->pos < buf->cursize) { unsigned char c = buf->inbuf[buf->pos]; if(c == '\n') { - size_t lnlen = buf->pos - parser->offset + 1; + size_t lnlen = buf->pos - parser->line_offset + 1; if(lnlen <= 2) { if(lnlen == 1 || buf->inbuf[buf->pos-1] == '\r') { // skip empty line buf->pos++; - parser->offset = buf->pos; + parser->line_offset = buf->pos; return 1; } // insufficient chars for request, return error @@ -135,7 +135,7 @@ } else { parser->start_line.length = lnlen; } - parser->start_line.ptr = (char*)buf->inbuf + parser->offset; + parser->start_line.ptr = (char*)buf->inbuf + parser->line_offset; buf->pos++; return 0; } @@ -147,11 +147,6 @@ int http_parser_parse_header(HttpParser *parser) { netbuf *buf = parser->netbuf; - parser->offset = buf->pos; // line offset - parser->name.ptr = NULL; - parser->name.length = 0; - parser->value.ptr = NULL; - parser->value.length = 0; while(1) { if(buf->pos >= buf->cursize) { return 1; @@ -161,8 +156,8 @@ if(c > 32) { parser->wl = 0; if(c == ':' && parser->value.ptr == NULL) { - parser->name.ptr = (char*)buf->inbuf + parser->offset; - parser->name.length = buf->pos - parser->offset - 1; + parser->name.ptr = (char*)buf->inbuf + parser->line_offset; + parser->name.length = buf->pos - parser->line_offset - 1; } else if(parser->name.ptr != NULL && parser->value.ptr == NULL) { parser->value.ptr = (char*)buf->inbuf + buf->pos - 1; } @@ -172,7 +167,7 @@ parser->state++; return 0; } else { - parser->offset = buf->pos; + parser->line_offset = buf->pos; if(parser->name.length != 0) { if(parser->value.ptr) { parser->value.length = (buf->inbuf + buf->pos - 1)