MCPcopy Create free account
hub / github.com/caozhiyi/CppNet / processRequestLine

Method processRequestLine

test/http/HttpContext.cpp:9–41  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7const int VERSION_LEN = sizeof("HTTP/1.1");
8
9bool CHttpContext::processRequestLine(const char* begin, const char* end) {
10 bool succeed = false;
11 const char* start = begin;
12 const char* space = std::find(start, end, ' ');
13 if (space != end && _request.SetMethod(start, space)) {
14 start = space + 1;
15 space = std::find(start, end, ' ');
16 if (space != end) {
17 const char* question = std::find(start, space, '?');
18 if (question != space) {
19 _request.SetPath(start, question);
20 _request.SetQuery(question, space);
21
22 } else {
23 _request.SetPath(start, space);
24 }
25
26 start = space + 1;
27 const char* version_end = start + VERSION_LEN - 1;
28 succeed = true;
29 if (std::equal(start, version_end, "HTTP/1.1")) {
30 _request.SetVersion(Http11);
31
32 } else if (std::equal(start, version_end, "HTTP/1.0")) {
33 _request.SetVersion(Http10);
34
35 } else {
36 succeed = false;
37 }
38 }
39 }
40 return succeed;
41}
42
43// return false if any error
44bool CHttpContext::ParseRequest(base::CBuffer* buf, uint64_t receive_time) {

Callers

nothing calls this directly

Calls 4

SetMethodMethod · 0.80
SetPathMethod · 0.80
SetQueryMethod · 0.80
SetVersionMethod · 0.80

Tested by

no test coverage detected