diff -r a4e1ba59b733 -r 70fdf948b642 src/server/daemon/httpparser.h --- a/src/server/daemon/httpparser.h Tue Feb 03 19:09:53 2026 +0100 +++ b/src/server/daemon/httpparser.h Fri Feb 06 14:06:04 2026 +0100 @@ -37,19 +37,37 @@ extern "C" { #endif -/* - * http parser states - * - * 0: start line - * 1: header - * 2: finish - */ - + typedef struct _http_parser { - HTTPRequest *request; - + /* + * http parser type + * + * 0: request + * 1: response + */ + int type; + + /* + * http parser states + * + * 0: start line + * 1: header + * 2: finish + */ int state; + + /* + * first line (request/response line) + */ cxmutstr start_line; + + netbuf *netbuf; + HeaderArray *headers; + cxmutstr method; + cxmutstr uri; + cxmutstr httpv; + cxmutstr msg; + int status; /* local parser variables */ int wl; /* only white space */ @@ -62,9 +80,15 @@ } HttpParser; HttpParser* http_parser_new(HTTPRequest *request); +HttpParser* http_parser_new2(int type, netbuf *netbuf, HeaderArray *headers); void http_parser_free(HttpParser *parser); /* + * updates method, uri and httpv in an HTTPRequest object + */ +void http_parser_update_request(HttpParser *parser, HTTPRequest *request); + +/* * process http parsing * * return @@ -80,7 +104,7 @@ int http_parser_parse_header(HttpParser *parser); int parse_request_line(HttpParser *parser); - +int parse_response_line(HttpParser *parser); #ifdef __cplusplus