43 #include "httplistener.h" |
43 #include "httplistener.h" |
44 #include "func.h" |
44 #include "func.h" |
45 #include "error.h" |
45 #include "error.h" |
46 |
46 |
47 void http_request_init(HTTPRequest *req) { |
47 void http_request_init(HTTPRequest *req) { |
48 req->connection = NULL; |
48 memset(req, 0, sizeof(HTTPRequest)); |
49 req->uri.ptr = NULL; |
|
50 |
49 |
51 HeaderArray *hd = malloc(sizeof(HeaderArray)); |
50 HeaderArray *hd = malloc(sizeof(HeaderArray)); |
52 hd->next = NULL; |
51 hd->next = NULL; |
53 hd->len = 0; |
52 hd->len = 0; |
54 hd->headers = calloc(16, sizeof(Header)); |
53 hd->headers = calloc(16, sizeof(Header)); |
153 rq->vs = request->connection->listener->default_vs.vs; |
152 rq->vs = request->connection->listener->default_vs.vs; |
154 |
153 |
155 // Pass request line as "clf-request" |
154 // Pass request line as "clf-request" |
156 // remove \r\n |
155 // remove \r\n |
157 sstr_t clfreq = request->request_line; |
156 sstr_t clfreq = request->request_line; |
158 while(clfreq.ptr[clfreq.length - 1] < 33) { |
157 while(clfreq.length > 0 && clfreq.ptr[clfreq.length - 1] < 33) { |
159 clfreq.length--; |
158 clfreq.length--; |
160 } |
159 } |
161 request->request_line = clfreq; |
|
162 pblock_kvinsert( |
160 pblock_kvinsert( |
163 pb_key_clf_request, |
161 pb_key_clf_request, |
164 request->request_line.ptr, |
162 clfreq.ptr, |
165 request->request_line.length, |
163 clfreq.length, |
166 rq->rq.reqpb); |
164 rq->rq.reqpb); |
167 |
165 |
168 // Pass method as "method" in reqpb, and also as method_num |
166 // Pass method as "method" in reqpb, and also as method_num |
169 pblock_kvinsert( |
167 pblock_kvinsert( |
170 pb_key_method, |
168 pb_key_method, |