commit 2d74793fb42a725dc29dcd4b9ec286ebee8cdbe1 Author: Sylvain Munaut Date: Thu Jun 5 11:28:27 2014 +0200 rgw: Don't send error body when it's a HEAD request The main 'operation' know not to send any body for HEAD requests. However for errors, this was not the case, the formatter would be flushed and would send the error 'message' in the body in all cases. For the FastCGI case it doesn't seem to be an issue, it's possible that the webserver (apache/lighttpd/...) cleans up the response into shape. But when using the new civetweb frontend this cause invalid HTTP. Fixes #8539 Signed-off-by: Sylvain Munaut diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc index 69948a6..b74002d 100644 --- a/src/rgw/rgw_rest.cc +++ b/src/rgw/rgw_rest.cc @@ -180,7 +180,7 @@ void rgw_flush_formatter_and_reset(struct req_state *s, Formatter *formatter) std::ostringstream oss; formatter->flush(oss); std::string outs(oss.str()); - if (!outs.empty()) { + if (!outs.empty() && s->op != OP_HEAD) { s->cio->write(outs.c_str(), outs.size()); } @@ -192,7 +192,7 @@ void rgw_flush_formatter(struct req_state *s, Formatter *formatter) std::ostringstream oss; formatter->flush(oss); std::string outs(oss.str()); - if (!outs.empty()) { + if (!outs.empty() && s->op != OP_HEAD) { s->cio->write(outs.c_str(), outs.size()); } }