src/server/daemon/httpparser.h

changeset 662
70fdf948b642
parent 415
d938228c382e
--- 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

mercurial