diff --git a/server_http.hpp b/server_http.hpp index 0a54ca4..6970bc0 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -255,7 +255,7 @@ namespace SimpleWeb { //streambuf (maybe some bytes of the content) is appended to in the async_read-function below (for retrieving content). size_t num_additional_bytes=request->streambuf.size()-bytes_transferred; - if(!parse_request(request, request->content)) + if(!parse_request(request)) return; //If content, read that as well @@ -292,9 +292,9 @@ namespace SimpleWeb { }); } - bool parse_request(const std::shared_ptr &request, std::istream& stream) const { + bool parse_request(const std::shared_ptr &request) const { std::string line; - getline(stream, line); + getline(request->content, line); size_t method_end; if((method_end=line.find(' '))!=std::string::npos) { size_t path_end; @@ -311,7 +311,7 @@ namespace SimpleWeb { else return false; - getline(stream, line); + getline(request->content, line); size_t param_end; while((param_end=line.find(':'))!=std::string::npos) { size_t value_start=param_end+1; @@ -322,7 +322,7 @@ namespace SimpleWeb { request->header.insert(std::make_pair(line.substr(0, param_end), line.substr(value_start, line.size()-value_start-1))); } - getline(stream, line); + getline(request->content, line); } } else diff --git a/tests/parse_test.cpp b/tests/parse_test.cpp index 6774a88..3eff774 100644 --- a/tests/parse_test.cpp +++ b/tests/parse_test.cpp @@ -15,13 +15,13 @@ public: bool parse_request_test() { std::shared_ptr request(new Request()); - stringstream ss; - ss << "GET /test/ HTTP/1.1\r\n"; - ss << "TestHeader: test\r\n"; - ss << "TestHeader2:test2\r\n"; - ss << "\r\n"; + std::ostream stream(&request->content.streambuf); + stream << "GET /test/ HTTP/1.1\r\n"; + stream << "TestHeader: test\r\n"; + stream << "TestHeader2:test2\r\n"; + stream << "\r\n"; - if(!parse_request(request, ss)) + if(!parse_request(request)) return 0; if(request->method!="GET")