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.
This commit is contained in:
parent
6aafa6a90a
commit
09303d5b94
1 changed files with 4 additions and 1 deletions
|
|
@ -58,15 +58,18 @@ namespace SimpleWeb {
|
||||||
void write_header(const CaseInsensitiveMultimap &header, size_type size) {
|
void write_header(const CaseInsensitiveMultimap &header, size_type size) {
|
||||||
bool content_length_written = false;
|
bool content_length_written = false;
|
||||||
bool chunked_transfer_encoding = false;
|
bool chunked_transfer_encoding = false;
|
||||||
|
bool event_stream = false;
|
||||||
for(auto &field : header) {
|
for(auto &field : header) {
|
||||||
if(!content_length_written && case_insensitive_equal(field.first, "content-length"))
|
if(!content_length_written && case_insensitive_equal(field.first, "content-length"))
|
||||||
content_length_written = true;
|
content_length_written = true;
|
||||||
else if(!chunked_transfer_encoding && case_insensitive_equal(field.first, "transfer-encoding") && case_insensitive_equal(field.second, "chunked"))
|
else if(!chunked_transfer_encoding && case_insensitive_equal(field.first, "transfer-encoding") && case_insensitive_equal(field.second, "chunked"))
|
||||||
chunked_transfer_encoding = true;
|
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";
|
*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";
|
*this << "Content-Length: " << size << "\r\n\r\n";
|
||||||
else
|
else
|
||||||
*this << "\r\n";
|
*this << "\r\n";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue