]> git.sesse.net Git - cubemap/blobdiff - httpinput.cpp
Make the warning on dropping junk bytes clearer.
[cubemap] / httpinput.cpp
index 043c07c6fd2085d7b199470da796318e19ee850b..807abacc87e0f466377b9a3153247454aac1f710 100644 (file)
@@ -222,31 +222,14 @@ bool HTTPInput::parse_response(const std::string &request)
                return false;
        }
 
-       multimap<string, string> parameters;
-       for (size_t i = 1; i < lines.size(); ++i) {
-               size_t split = lines[i].find(":");
-               if (split == string::npos) {
-                       log(WARNING, "[%s] Ignoring malformed HTTP response line '%s'",
-                               url.c_str(), lines[i].c_str());
-                       continue;
-               }
-
-               string key(lines[i].begin(), lines[i].begin() + split);
-
-               // Skip any spaces after the colon.
-               do {
-                       ++split;
-               } while (split < lines[i].size() && lines[i][split] == ' ');
+       multimap<string, string> parameters = extract_headers(lines, url);
 
-               string value(lines[i].begin() + split, lines[i].end());
-
-               // Remove “Content-encoding: metacube”.
-               // TODO: Make case-insensitive.
-               if (key == "Content-encoding" && value == "metacube") {
-                       continue;
-               }
-
-               parameters.insert(make_pair(key, value));
+       // Remove “Content-encoding: metacube”.
+       // TODO: Make case-insensitive.
+       multimap<string, string>::iterator encoding_it =
+               parameters.find("Content-encoding");
+       if (encoding_it != parameters.end() && encoding_it->second == "metacube") {
+               parameters.erase(encoding_it);
        }
 
        // Change “Server: foo” to “Server: metacube/0.1 (reflecting: foo)”
@@ -595,7 +578,7 @@ void HTTPInput::drop_pending_data(size_t num_bytes)
        if (num_bytes == 0) {
                return;
        }
-       log(WARNING, "[%s] Dropping %lld junk bytes from stream, maybe it is not a Metacube2 stream?",
+       log(WARNING, "[%s] Dropping %lld junk bytes; not a Metacube2 stream, or data was dropped from the middle of the stream",
                url.c_str(), (long long)num_bytes);
        assert(pending_data.size() >= num_bytes);
        pending_data.erase(pending_data.begin(), pending_data.begin() + num_bytes);