http-backend: provide Allow header for 405
authorBrian M. Carlson <sandals@crustytoothpaste.net>
Thu, 12 Sep 2013 00:30:01 +0000 (00:30 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Sep 2013 15:44:44 +0000 (08:44 -0700)
The HTTP 1.1 standard requires an Allow header for 405 Method Not Allowed:

The response MUST include an Allow header containing a list of valid methods
for the requested resource.

So provide such a header when we return a 405 to the user agent.

Signed-off-by: Brian M. Carlson <sandals@crustytoothpaste.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http-backend.c
index f50e77fb2890207bd7385b59bdd561133991c910..5102d974aafbdad003a083fe8c645c3a4955a7e0 100644 (file)
@@ -564,9 +564,11 @@ int main(int argc, char **argv)
 
                        if (strcmp(method, c->method)) {
                                const char *proto = getenv("SERVER_PROTOCOL");
-                               if (proto && !strcmp(proto, "HTTP/1.1"))
+                               if (proto && !strcmp(proto, "HTTP/1.1")) {
                                        http_status(405, "Method Not Allowed");
-                               else
+                                       hdr_str("Allow", !strcmp(c->method, "GET") ?
+                                               "GET, HEAD" : c->method);
+                               } else
                                        http_status(400, "Bad Request");
                                hdr_nocache();
                                end_headers();