]> git.sesse.net Git - cubemap/commitdiff
Capitalize HTTP header names after dashes.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 9 Apr 2018 18:57:15 +0000 (20:57 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 9 Apr 2018 18:58:15 +0000 (20:58 +0200)
In particular, writing Content-Length instead of Content-length fixes a
problem where VLC's HTTP client would hang forever on our responses.
This makes HLS generally work in VLC, although it still starts playing
from the start instead of from the end.

server.cpp
stream.cpp

index 2f55589ac75773af7494417e099b0b58112814db..40f3b48afe71425cfa6b0e9f00bdcdeb0a73aa55 100644 (file)
@@ -891,7 +891,7 @@ void Server::skip_lost_data(Client *client)
                if (!client->close_after_response) {
                        assert(client->stream_pos_end != Client::STREAM_POS_NO_END);
 
                if (!client->close_after_response) {
                        assert(client->stream_pos_end != Client::STREAM_POS_NO_END);
 
-                       // We've already sent a Content-length, so we can't just skip data.
+                       // We've already sent a Content-Length, so we can't just skip data.
                        // Close the connection immediately and hope the other side
                        // is able to figure out that there was an error and it needs to skip.
                        client->close_after_response = true;
                        // Close the connection immediately and hope the other side
                        // is able to figure out that there was an error and it needs to skip.
                        client->close_after_response = true;
@@ -1067,11 +1067,11 @@ void Server::construct_stream_header(Client *client)
        string response = stream->http_header;
        if (client->stream_pos == Client::STREAM_POS_HEADER_ONLY) {
                char buf[64];
        string response = stream->http_header;
        if (client->stream_pos == Client::STREAM_POS_HEADER_ONLY) {
                char buf[64];
-               snprintf(buf, sizeof(buf), "Content-length: %zu\r\n", stream->stream_header.size());
+               snprintf(buf, sizeof(buf), "Content-Length: %zu\r\n", stream->stream_header.size());
                response.append(buf);
        } else if (client->stream_pos_end != Client::STREAM_POS_NO_END) {
                char buf[64];
                response.append(buf);
        } else if (client->stream_pos_end != Client::STREAM_POS_NO_END) {
                char buf[64];
-               snprintf(buf, sizeof(buf), "Content-length: %" PRIu64 "\r\n", client->stream_pos_end - client->stream_pos);
+               snprintf(buf, sizeof(buf), "Content-Length: %" PRIu64 "\r\n", client->stream_pos_end - client->stream_pos);
                response.append(buf);
        }
        if (client->http_11) {
                response.append(buf);
        }
        if (client->http_11) {
@@ -1091,7 +1091,7 @@ void Server::construct_stream_header(Client *client)
        if (stream->encoding == Stream::STREAM_ENCODING_RAW) {
                response.append("\r\n");
        } else if (stream->encoding == Stream::STREAM_ENCODING_METACUBE) {
        if (stream->encoding == Stream::STREAM_ENCODING_RAW) {
                response.append("\r\n");
        } else if (stream->encoding == Stream::STREAM_ENCODING_METACUBE) {
-               response.append("Content-encoding: metacube\r\n\r\n");
+               response.append("Content-Encoding: metacube\r\n\r\n");
                if (!stream->stream_header.empty()) {
                        metacube2_block_header hdr;
                        memcpy(hdr.sync, METACUBE2_SYNC, sizeof(hdr.sync));
                if (!stream->stream_header.empty()) {
                        metacube2_block_header hdr;
                        memcpy(hdr.sync, METACUBE2_SYNC, sizeof(hdr.sync));
@@ -1125,11 +1125,11 @@ void Server::construct_error(Client *client, int error_code)
        char error[256];
        if (client->http_11 && client->close_after_response) {
                snprintf(error, sizeof(error),
        char error[256];
        if (client->http_11 && client->close_after_response) {
                snprintf(error, sizeof(error),
-                       "HTTP/1.1 %d Error\r\nContent-type: text/plain\r\nConnection: close\r\n\r\nSomething went wrong. Sorry.\r\n",
+                       "HTTP/1.1 %d Error\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nSomething went wrong. Sorry.\r\n",
                        error_code);
        } else {
                snprintf(error, sizeof(error),
                        error_code);
        } else {
                snprintf(error, sizeof(error),
-                       "HTTP/1.%d %d Error\r\nContent-type: text/plain\r\nContent-length: 30\r\n\r\nSomething went wrong. Sorry.\r\n",
+                       "HTTP/1.%d %d Error\r\nContent-Type: text/plain\r\nContent-Length: 30\r\n\r\nSomething went wrong. Sorry.\r\n",
                        client->http_11, error_code);
        }
        client->header_or_short_response_holder = error;
                        client->http_11, error_code);
        }
        client->header_or_short_response_holder = error;
index 07d6ae949217de37d483525fbf2fab0de6383e0f..7ea8a956ee7addf099bb586ef41686decd91dbfc 100644 (file)
@@ -458,9 +458,9 @@ shared_ptr<const string> Stream::generate_hls_playlist(bool http_11, bool close_
                assert(close_after_response);
                response = "HTTP/1.0 200 OK\r\n";
        }
                assert(close_after_response);
                response = "HTTP/1.0 200 OK\r\n";
        }
-       snprintf(buf, sizeof(buf), "Content-length: %zu\r\n", playlist.size());
+       snprintf(buf, sizeof(buf), "Content-Length: %zu\r\n", playlist.size());
        response.append(buf);
        response.append(buf);
-       response.append("Content-type: application/x-mpegURL\r\n");
+       response.append("Content-Type: application/x-mpegURL\r\n");
        if (!allow_origin.empty()) {
                response.append("Access-Control-Allow-Origin: ");
                response.append(allow_origin);
        if (!allow_origin.empty()) {
                response.append("Access-Control-Allow-Origin: ");
                response.append(allow_origin);