MCPcopy Create free account
hub / github.com/chenshuo/muduo / processRequestLine

Method processRequestLine

muduo/net/http/HttpContext.cc:16–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14using namespace muduo::net;
15
16bool HttpContext::processRequestLine(const char* begin, const char* end)
17{
18 bool succeed = false;
19 const char* start = begin;
20 const char* space = std::find(start, end, ' ');
21 if (space != end && request_.setMethod(start, space))
22 {
23 start = space+1;
24 space = std::find(start, end, ' ');
25 if (space != end)
26 {
27 const char* question = std::find(start, space, '?');
28 if (question != space)
29 {
30 request_.setPath(start, question);
31 request_.setQuery(question, space);
32 }
33 else
34 {
35 request_.setPath(start, space);
36 }
37 start = space+1;
38 succeed = end-start == 8 && std::equal(start, end-1, "HTTP/1.");
39 if (succeed)
40 {
41 if (*(end-1) == '1')
42 {
43 request_.setVersion(HttpRequest::kHttp11);
44 }
45 else if (*(end-1) == '0')
46 {
47 request_.setVersion(HttpRequest::kHttp10);
48 }
49 else
50 {
51 succeed = false;
52 }
53 }
54 }
55 }
56 return succeed;
57}
58
59// return false if any error
60bool HttpContext::parseRequest(Buffer* buf, Timestamp receiveTime)

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