]> git.sesse.net Git - cubemap/blobdiff - parse.cpp
Replace map with unordered_map nearly everywhere, for speed.
[cubemap] / parse.cpp
index c33543f3afc44b12ce1d16fa88a9616dd560b2c2..bec742b8897e850795d2720fc4ab79cdf27e2628 100644 (file)
--- a/parse.cpp
+++ b/parse.cpp
@@ -56,9 +56,9 @@ vector<string> split_lines(const string &str)
        return ret;
 }
 
-multimap<string, string> extract_headers(const vector<string> &lines, const string &log_context)
+unordered_multimap<string, string> extract_headers(const vector<string> &lines, const string &log_context)
 {
-       multimap<string, string> parameters;
+       unordered_multimap<string, string> parameters;
        for (size_t i = 1; i < lines.size(); ++i) {
                size_t split = lines[i].find(":");
                if (split == string::npos) {
@@ -72,7 +72,7 @@ multimap<string, string> extract_headers(const vector<string> &lines, const stri
                // Skip any spaces after the colon.
                do {
                        ++split;
-               } while (split < lines[i].size() && lines[i][split] == ' ');
+               } while (split < lines[i].size() && (lines[i][split] == ' ' || lines[i][split] == '\t'));
 
                string value(lines[i].begin() + split, lines[i].end());
 
@@ -100,7 +100,7 @@ RequestParseStatus wait_for_double_newline(string *existing_data, const char *ne
        const char *ptr = reinterpret_cast<char *>(
                memmem(existing_data->data() + start_at, existing_data->size() - start_at,
                       "\r\n\r\n", 4));
-       if (ptr == NULL) {
+       if (ptr == nullptr) {
                return RP_NOT_FINISHED_YET;
        }
        if (ptr != existing_data->data() + existing_data->size() - 4) {