about summary refs log tree commit diff
path: root/cgit.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2013-05-28 16:33:30 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2013-08-12 13:14:10 -0600
commit61ff10065b579fa38182fcf10cc7e63839acd53c (patch)
tree0d4b37af5a034c10763f7d0f1c39af55fabed115 /cgit.c
parentrobots.txt: disallow access to snapshots (diff)
downloadcgit-pink-61ff10065b579fa38182fcf10cc7e63839acd53c.tar.gz
cgit-pink-61ff10065b579fa38182fcf10cc7e63839acd53c.zip
cache: document negative ttls and add about ttl
We've long supported negative ttls, for infinite cache, except the
documentation incorrectly showed one of our defaults as being 5 and not
-1. As well, with a negative ttl, we were actually making the HTTP
expired header go backwards. This changes it to go ahead ten years
instead.

Further, we add an cache-about-ttl option to set a different ttl for
about pages, which are now increasingly being filtered through markdown
or just sent statically anyway.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'cgit.c')
-rw-r--r--cgit.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/cgit.c b/cgit.c
index 950b878..a45ce1f 100644
--- a/cgit.c
+++ b/cgit.c
@@ -211,6 +211,8 @@ static void config_cb(const char *name, const char *value)
 		ctx.cfg.cache_static_ttl = atoi(value);
 	else if (!strcmp(name, "cache-dynamic-ttl"))
 		ctx.cfg.cache_dynamic_ttl = atoi(value);
+	else if (!strcmp(name, "cache-about-ttl"))
+		ctx.cfg.cache_about_ttl = atoi(value);
 	else if (!strcmp(name, "case-sensitive-sort"))
 		ctx.cfg.case_sensitive_sort = atoi(value);
 	else if (!strcmp(name, "about-filter"))
@@ -351,12 +353,13 @@ static void prepare_context(struct cgit_context *ctx)
 	ctx->cfg.agefile = "info/web/last-modified";
 	ctx->cfg.nocache = 0;
 	ctx->cfg.cache_size = 0;
-	ctx->cfg.cache_dynamic_ttl = 5;
 	ctx->cfg.cache_max_create_time = 5;
-	ctx->cfg.cache_repo_ttl = 5;
 	ctx->cfg.cache_root = CGIT_CACHE_ROOT;
+	ctx->cfg.cache_about_ttl = 15;
+	ctx->cfg.cache_repo_ttl = 5;
 	ctx->cfg.cache_root_ttl = 5;
 	ctx->cfg.cache_scanrc_ttl = 15;
+	ctx->cfg.cache_dynamic_ttl = 5;
 	ctx->cfg.cache_static_ttl = -1;
 	ctx->cfg.case_sensitive_sort = 1;
 	ctx->cfg.branch_sort = 0;
@@ -922,6 +925,9 @@ static int calc_ttl()
 	if (!ctx.qry.page)
 		return ctx.cfg.cache_repo_ttl;
 
+	if (!strcmp(ctx.qry.page, "about"))
+		return ctx.cfg.cache_about_ttl;
+
 	if (ctx.qry.has_symref)
 		return ctx.cfg.cache_dynamic_ttl;
 
@@ -973,7 +979,10 @@ int main(int argc, const char **argv)
 	}
 
 	ttl = calc_ttl();
-	ctx.page.expires += ttl * 60;
+	if (ttl < 0)
+		ctx.page.expires += 10 * 365 * 24 * 60 * 60; /* 10 years */
+	else
+		ctx.page.expires += ttl * 60;
 	if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD"))
 		ctx.cfg.nocache = 1;
 	if (ctx.cfg.nocache)