From 09303d5b943d1c1566ae66e23ca4e3a2947c0a24 Mon Sep 17 00:00:00 2001 From: Andrei Gheorghe Date: Mon, 19 Sep 2022 14:57:28 +0000 Subject: [PATCH] Updated the write_header method to not write Content-Length: 0 for SSE resppnses. There was a possible work-around - add the Transfer-Encoding: "chunked" header - but this is not correct as SSE and chunked are two different things. --- server_http.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server_http.hpp b/server_http.hpp index 7cdc904..5729a4f 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -58,15 +58,18 @@ namespace SimpleWeb { void write_header(const CaseInsensitiveMultimap &header, size_type size) { bool content_length_written = false; bool chunked_transfer_encoding = false; + bool event_stream = false; for(auto &field : header) { if(!content_length_written && case_insensitive_equal(field.first, "content-length")) content_length_written = true; else if(!chunked_transfer_encoding && case_insensitive_equal(field.first, "transfer-encoding") && case_insensitive_equal(field.second, "chunked")) chunked_transfer_encoding = true; + else if(!event_stream && case_insensitive_equal(field.first, "content-type") && case_insensitive_equal(field.second, "text/event-stream")) + event_stream = true; *this << field.first << ": " << field.second << "\r\n"; } - if(!content_length_written && !chunked_transfer_encoding && !close_connection_after_response) + if(!content_length_written && !chunked_transfer_encoding && !event_stream && !close_connection_after_response) *this << "Content-Length: " << size << "\r\n\r\n"; else *this << "\r\n";