Add support for HEAD requests

This is a quick 'n dirty hack which makes cgit honor HEAD requests.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2009-02-19 23:24:15 +01:00
parent 488a214a81
commit 3ff58ddd51
2 changed files with 7 additions and 0 deletions

3
cgit.c
View File

@ -430,6 +430,7 @@ static int calc_ttl()
int main(int argc, const char **argv) int main(int argc, const char **argv)
{ {
const char *cgit_config_env = getenv("CGIT_CONFIG"); const char *cgit_config_env = getenv("CGIT_CONFIG");
const char *method = getenv("REQUEST_METHOD");
const char *path; const char *path;
char *qry; char *qry;
int err, ttl; int err, ttl;
@ -476,6 +477,8 @@ int main(int argc, const char **argv)
ttl = calc_ttl(); ttl = calc_ttl();
ctx.page.expires += ttl*60; ctx.page.expires += ttl*60;
if (method && !strcmp(method, "HEAD"))
ctx.cfg.nocache = 1;
if (ctx.cfg.nocache) if (ctx.cfg.nocache)
ctx.cfg.cache_size = 0; ctx.cfg.cache_size = 0;
err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root,

View 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) void cgit_print_http_headers(struct cgit_context *ctx)
{ {
const char *method = getenv("REQUEST_METHOD");
if (ctx->page.mimetype && ctx->page.charset) if (ctx->page.mimetype && ctx->page.charset)
htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype,
ctx->page.charset); ctx->page.charset);
@ -471,6 +473,8 @@ void cgit_print_http_headers(struct cgit_context *ctx)
if (ctx->page.etag) if (ctx->page.etag)
htmlf("ETag: \"%s\"\n", ctx->page.etag); htmlf("ETag: \"%s\"\n", ctx->page.etag);
html("\n"); html("\n");
if (method && !strcmp(method, "HEAD"))
exit(0);
} }
void cgit_print_docstart(struct cgit_context *ctx) void cgit_print_docstart(struct cgit_context *ctx)