]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Don't send error body when it's a HEAD request
authorSylvain Munaut <s.munaut@whatever-company.com>
Thu, 5 Jun 2014 09:28:27 +0000 (11:28 +0200)
committerSage Weil <sage@redhat.com>
Tue, 12 Aug 2014 22:14:02 +0000 (15:14 -0700)
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.

Backport: firefly
Fixes #8539

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Signed-off-by: Sylvain Munaut <s.munaut@whatever-company.com>
(cherry picked from commit 0a2b4c25541bbd15776d3d35986518e37166910f)

src/rgw/rgw_rest.cc

index 69948a6735bfe9fa9441e76c0c476f8b9ead086e..b74002de1e71caa2a82aac263a20eb875b608b1e 100644 (file)
@@ -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());
   }
 }