src/server/daemon/httprequest.c

changeset 180
98462e878ca7
parent 168
5c752979bfd6
child 193
aa8393527b1e
equal deleted inserted replaced
179:ef6827505bd2 180:98462e878ca7
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,

mercurial