diff options
author | 2016-11-23 08:37:05 +0100 | |
---|---|---|
committer | 2016-11-23 08:37:05 +0100 | |
commit | dbbd5e9c983f4fec4476855ac8571376062390d8 (patch) | |
tree | d42cc8c51030f8b7a481c35a1393962eafea484a /src/lib/http/request_parser.cpp | |
parent | 67452fff5652fcc9f31fd691c1c435cce16911f6 (diff) |
As promised, removing this part of code since it is used for compilers check, no need for this to be in release (nw)
Diffstat (limited to 'src/lib/http/request_parser.cpp')
-rw-r--r-- | src/lib/http/request_parser.cpp | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/src/lib/http/request_parser.cpp b/src/lib/http/request_parser.cpp deleted file mode 100644 index f1e69ed677d..00000000000 --- a/src/lib/http/request_parser.cpp +++ /dev/null @@ -1,308 +0,0 @@ -// license:Boost -// copyright-holders:Christopher M. Kohlhoff - -#include "request_parser.hpp" -#include "request.hpp" - -namespace http { -namespace server { - -request_parser::request_parser() - : m_state(method_start) -{ -} - -void request_parser::reset() -{ - m_state = method_start; -} - -request_parser::result_type request_parser::consume(request& req, char input) -{ - switch (m_state) - { - case method_start: - if (!is_char(input) || is_ctl(input) || is_tspecial(input)) - { - return bad; - } - else - { - m_state = method; - req.method.push_back(input); - return indeterminate; - } - case method: - if (input == ' ') - { - m_state = uri; - return indeterminate; - } - else if (!is_char(input) || is_ctl(input) || is_tspecial(input)) - { - return bad; - } - else - { - req.method.push_back(input); - return indeterminate; - } - case uri: - if (input == ' ') - { - m_state = http_version_h; - return indeterminate; - } - else if (is_ctl(input)) - { - return bad; - } - else - { - req.uri.push_back(input); - return indeterminate; - } - case http_version_h: - if (input == 'H') - { - m_state = http_version_t_1; - return indeterminate; - } - else - { - return bad; - } - case http_version_t_1: - if (input == 'T') - { - m_state = http_version_t_2; - return indeterminate; - } - else - { - return bad; - } - case http_version_t_2: - if (input == 'T') - { - m_state = http_version_p; - return indeterminate; - } - else - { - return bad; - } - case http_version_p: - if (input == 'P') - { - m_state = http_version_slash; - return indeterminate; - } - else - { - return bad; - } - case http_version_slash: - if (input == '/') - { - req.http_version_major = 0; - req.http_version_minor = 0; - m_state = http_version_major_start; - return indeterminate; - } - else - { - return bad; - } - case http_version_major_start: - if (is_digit(input)) - { - req.http_version_major = req.http_version_major * 10 + input - '0'; - m_state = http_version_major; - return indeterminate; - } - else - { - return bad; - } - case http_version_major: - if (input == '.') - { - m_state = http_version_minor_start; - return indeterminate; - } - else if (is_digit(input)) - { - req.http_version_major = req.http_version_major * 10 + input - '0'; - return indeterminate; - } - else - { - return bad; - } - case http_version_minor_start: - if (is_digit(input)) - { - req.http_version_minor = req.http_version_minor * 10 + input - '0'; - m_state = http_version_minor; - return indeterminate; - } - else - { - return bad; - } - case http_version_minor: - if (input == '\r') - { - m_state = expecting_newline_1; - return indeterminate; - } - else if (is_digit(input)) - { - req.http_version_minor = req.http_version_minor * 10 + input - '0'; - return indeterminate; - } - else - { - return bad; - } - case expecting_newline_1: - if (input == '\n') - { - m_state = header_line_start; - return indeterminate; - } - else - { - return bad; - } - case header_line_start: - if (input == '\r') - { - m_state = expecting_newline_3; - return indeterminate; - } - else if (!req.headers.empty() && (input == ' ' || input == '\t')) - { - m_state = header_lws; - return indeterminate; - } - else if (!is_char(input) || is_ctl(input) || is_tspecial(input)) - { - return bad; - } - else - { - req.headers.push_back(header()); - req.headers.back().name.push_back(input); - m_state = header_name; - return indeterminate; - } - case header_lws: - if (input == '\r') - { - m_state = expecting_newline_2; - return indeterminate; - } - else if (input == ' ' || input == '\t') - { - return indeterminate; - } - else if (is_ctl(input)) - { - return bad; - } - else - { - m_state = header_value; - req.headers.back().value.push_back(input); - return indeterminate; - } - case header_name: - if (input == ':') - { - m_state = space_before_header_value; - return indeterminate; - } - else if (!is_char(input) || is_ctl(input) || is_tspecial(input)) - { - return bad; - } - else - { - req.headers.back().name.push_back(input); - return indeterminate; - } - case space_before_header_value: - if (input == ' ') - { - m_state = header_value; - return indeterminate; - } - else - { - return bad; - } - case header_value: - if (input == '\r') - { - m_state = expecting_newline_2; - return indeterminate; - } - else if (is_ctl(input)) - { - return bad; - } - else - { - req.headers.back().value.push_back(input); - return indeterminate; - } - case expecting_newline_2: - if (input == '\n') - { - m_state = header_line_start; - return indeterminate; - } - else - { - return bad; - } - case expecting_newline_3: - return (input == '\n') ? good : bad; - default: - return bad; - } -} - -bool request_parser::is_char(int c) -{ - return c >= 0 && c <= 127; -} - -bool request_parser::is_ctl(int c) -{ - return (c >= 0 && c <= 31) || (c == 127); -} - -bool request_parser::is_tspecial(int c) -{ - switch (c) - { - case '(': case ')': case '<': case '>': case '@': - case ',': case ';': case ':': case '\\': case '"': - case '/': case '[': case ']': case '?': case '=': - case '{': case '}': case ' ': case '\t': - return true; - default: - return false; - } -} - -bool request_parser::is_digit(int c) -{ - return c >= '0' && c <= '9'; -} - -} // namespace server -} // namespace http |