MSC4108: Add a Content-Type header on the PUT response

This is a workaround for some proxy setup, where the ETag header gets
stripped from the response headers unless there is a Content-Type header
set.
This commit is contained in:
Quentin Gliech 2024-05-31 15:21:04 +02:00
parent 64f5a4a353
commit 3eb9cc0da8
No known key found for this signature in database
GPG key ID: 22D62B84552719FC

View file

@ -288,6 +288,12 @@ impl RendezvousHandler {
let mut response = Response::new(Bytes::new()); let mut response = Response::new(Bytes::new());
*response.status_mut() = StatusCode::ACCEPTED; *response.status_mut() = StatusCode::ACCEPTED;
prepare_headers(response.headers_mut(), session); prepare_headers(response.headers_mut(), session);
// Even though this isn't mandated by the MSC, we set a Content-Type on the response. It
// doesn't do any harm as the body is empty, but this helps escape a bug in some reverse
// proxy/cache setup which strips the ETag header if there is no Content-Type set.
response.headers_mut().typed_insert(ContentType::text());
http_response_to_twisted(twisted_request, response)?; http_response_to_twisted(twisted_request, response)?;
Ok(()) Ok(())