]> granicus.if.org Git - cgit/commitdiff
Add support for HEAD requests
authorLars Hjemli <hjemli@gmail.com>
Thu, 19 Feb 2009 22:24:15 +0000 (23:24 +0100)
committerLars Hjemli <hjemli@gmail.com>
Thu, 19 Feb 2009 22:24:15 +0000 (23:24 +0100)
This is a quick 'n dirty hack which makes cgit honor HEAD requests.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
cgit.c
ui-shared.c

diff --git a/cgit.c b/cgit.c
index 411e42132be546f3b8a9fc2c86b3f2f1dd04e04e..dc1c2e453de7ecb880df9d89a125196a66ad58eb 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -430,6 +430,7 @@ static int calc_ttl()
 int main(int argc, const char **argv)
 {
        const char *cgit_config_env = getenv("CGIT_CONFIG");
+       const char *method = getenv("REQUEST_METHOD");
        const char *path;
        char *qry;
        int err, ttl;
@@ -476,6 +477,8 @@ int main(int argc, const char **argv)
 
        ttl = calc_ttl();
        ctx.page.expires += ttl*60;
+       if (method && !strcmp(method, "HEAD"))
+               ctx.cfg.nocache = 1;
        if (ctx.cfg.nocache)
                ctx.cfg.cache_size = 0;
        err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root,
index 86a7d29cbc7263c2614229ed7909790eacb884a8..0dafc836736c1c8f165deb167c7b3a6f83302e0f 100644 (file)
@@ -456,6 +456,8 @@ void cgit_print_age(time_t t, time_t max_relative, char *format)
 
 void cgit_print_http_headers(struct cgit_context *ctx)
 {
+       const char *method = getenv("REQUEST_METHOD");
+
        if (ctx->page.mimetype && ctx->page.charset)
                htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype,
                      ctx->page.charset);
@@ -471,6 +473,8 @@ void cgit_print_http_headers(struct cgit_context *ctx)
        if (ctx->page.etag)
                htmlf("ETag: \"%s\"\n", ctx->page.etag);
        html("\n");
+       if (method && !strcmp(method, "HEAD"))
+               exit(0);
 }
 
 void cgit_print_docstart(struct cgit_context *ctx)