author | Lars Hjemli <hjemli@gmail.com> | 2009-07-25 09:59:22 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-07-25 09:59:22 (UTC) |
commit | 681fdc45473143de3f3c5f69fbc7b94f5d6b0b75 (patch) (unidiff) | |
tree | 3bfca05875524bee0e5444fb791707bc3e593dbd /cgit.c | |
parent | 7e5c048505efe1902fb476cc2cb3160ff7df013d (diff) | |
parent | 3ff58ddd51bcbcbc9b7649bad1a39aa98af4b49f (diff) | |
download | cgit-681fdc45473143de3f3c5f69fbc7b94f5d6b0b75.zip cgit-681fdc45473143de3f3c5f69fbc7b94f5d6b0b75.tar.gz cgit-681fdc45473143de3f3c5f69fbc7b94f5d6b0b75.tar.bz2 |
Merge branch 'plain-etag'
Conflicts:
ui-shared.c
-rw-r--r-- | cgit.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -193,32 +193,33 @@ static void prepare_context(struct cgit_context *ctx) | |||
193 | ctx->cfg.max_stats = 0; | 193 | ctx->cfg.max_stats = 0; |
194 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; | 194 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; |
195 | ctx->cfg.renamelimit = -1; | 195 | ctx->cfg.renamelimit = -1; |
196 | ctx->cfg.robots = "index, nofollow"; | 196 | ctx->cfg.robots = "index, nofollow"; |
197 | ctx->cfg.root_title = "Git repository browser"; | 197 | ctx->cfg.root_title = "Git repository browser"; |
198 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; | 198 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; |
199 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; | 199 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; |
200 | ctx->cfg.summary_branches = 10; | 200 | ctx->cfg.summary_branches = 10; |
201 | ctx->cfg.summary_log = 10; | 201 | ctx->cfg.summary_log = 10; |
202 | ctx->cfg.summary_tags = 10; | 202 | ctx->cfg.summary_tags = 10; |
203 | ctx->page.mimetype = "text/html"; | 203 | ctx->page.mimetype = "text/html"; |
204 | ctx->page.charset = PAGE_ENCODING; | 204 | ctx->page.charset = PAGE_ENCODING; |
205 | ctx->page.filename = NULL; | 205 | ctx->page.filename = NULL; |
206 | ctx->page.size = 0; | 206 | ctx->page.size = 0; |
207 | ctx->page.modified = time(NULL); | 207 | ctx->page.modified = time(NULL); |
208 | ctx->page.expires = ctx->page.modified; | 208 | ctx->page.expires = ctx->page.modified; |
209 | ctx->page.etag = NULL; | ||
209 | } | 210 | } |
210 | 211 | ||
211 | struct refmatch { | 212 | struct refmatch { |
212 | char *req_ref; | 213 | char *req_ref; |
213 | char *first_ref; | 214 | char *first_ref; |
214 | int match; | 215 | int match; |
215 | }; | 216 | }; |
216 | 217 | ||
217 | int find_current_ref(const char *refname, const unsigned char *sha1, | 218 | int find_current_ref(const char *refname, const unsigned char *sha1, |
218 | int flags, void *cb_data) | 219 | int flags, void *cb_data) |
219 | { | 220 | { |
220 | struct refmatch *info; | 221 | struct refmatch *info; |
221 | 222 | ||
222 | info = (struct refmatch *)cb_data; | 223 | info = (struct refmatch *)cb_data; |
223 | if (!strcmp(refname, info->req_ref)) | 224 | if (!strcmp(refname, info->req_ref)) |
224 | info->match = 1; | 225 | info->match = 1; |
@@ -418,32 +419,33 @@ static int calc_ttl() | |||
418 | 419 | ||
419 | if (!ctx.qry.page) | 420 | if (!ctx.qry.page) |
420 | return ctx.cfg.cache_repo_ttl; | 421 | return ctx.cfg.cache_repo_ttl; |
421 | 422 | ||
422 | if (ctx.qry.has_symref) | 423 | if (ctx.qry.has_symref) |
423 | return ctx.cfg.cache_dynamic_ttl; | 424 | return ctx.cfg.cache_dynamic_ttl; |
424 | 425 | ||
425 | if (ctx.qry.has_sha1) | 426 | if (ctx.qry.has_sha1) |
426 | return ctx.cfg.cache_static_ttl; | 427 | return ctx.cfg.cache_static_ttl; |
427 | 428 | ||
428 | return ctx.cfg.cache_repo_ttl; | 429 | return ctx.cfg.cache_repo_ttl; |
429 | } | 430 | } |
430 | 431 | ||
431 | int main(int argc, const char **argv) | 432 | int main(int argc, const char **argv) |
432 | { | 433 | { |
433 | const char *cgit_config_env = getenv("CGIT_CONFIG"); | 434 | const char *cgit_config_env = getenv("CGIT_CONFIG"); |
435 | const char *method = getenv("REQUEST_METHOD"); | ||
434 | const char *path; | 436 | const char *path; |
435 | char *qry; | 437 | char *qry; |
436 | int err, ttl; | 438 | int err, ttl; |
437 | 439 | ||
438 | prepare_context(&ctx); | 440 | prepare_context(&ctx); |
439 | cgit_repolist.length = 0; | 441 | cgit_repolist.length = 0; |
440 | cgit_repolist.count = 0; | 442 | cgit_repolist.count = 0; |
441 | cgit_repolist.repos = NULL; | 443 | cgit_repolist.repos = NULL; |
442 | 444 | ||
443 | if (getenv("SCRIPT_NAME")) | 445 | if (getenv("SCRIPT_NAME")) |
444 | ctx.cfg.script_name = xstrdup(getenv("SCRIPT_NAME")); | 446 | ctx.cfg.script_name = xstrdup(getenv("SCRIPT_NAME")); |
445 | if (getenv("QUERY_STRING")) | 447 | if (getenv("QUERY_STRING")) |
446 | ctx.qry.raw = xstrdup(getenv("QUERY_STRING")); | 448 | ctx.qry.raw = xstrdup(getenv("QUERY_STRING")); |
447 | cgit_parse_args(argc, argv); | 449 | cgit_parse_args(argc, argv); |
448 | parse_configfile(cgit_config_env ? cgit_config_env : CGIT_CONFIG, | 450 | parse_configfile(cgit_config_env ? cgit_config_env : CGIT_CONFIG, |
449 | config_cb); | 451 | config_cb); |
@@ -464,25 +466,27 @@ int main(int argc, const char **argv) | |||
464 | path = getenv("PATH_INFO"); | 466 | path = getenv("PATH_INFO"); |
465 | if (!ctx.qry.url && path) { | 467 | if (!ctx.qry.url && path) { |
466 | if (path[0] == '/') | 468 | if (path[0] == '/') |
467 | path++; | 469 | path++; |
468 | ctx.qry.url = xstrdup(path); | 470 | ctx.qry.url = xstrdup(path); |
469 | if (ctx.qry.raw) { | 471 | if (ctx.qry.raw) { |
470 | qry = ctx.qry.raw; | 472 | qry = ctx.qry.raw; |
471 | ctx.qry.raw = xstrdup(fmt("%s?%s", path, qry)); | 473 | ctx.qry.raw = xstrdup(fmt("%s?%s", path, qry)); |
472 | free(qry); | 474 | free(qry); |
473 | } else | 475 | } else |
474 | ctx.qry.raw = ctx.qry.url; | 476 | ctx.qry.raw = ctx.qry.url; |
475 | cgit_parse_url(ctx.qry.url); | 477 | cgit_parse_url(ctx.qry.url); |
476 | } | 478 | } |
477 | 479 | ||
478 | ttl = calc_ttl(); | 480 | ttl = calc_ttl(); |
479 | ctx.page.expires += ttl*60; | 481 | ctx.page.expires += ttl*60; |
482 | if (method && !strcmp(method, "HEAD")) | ||
483 | ctx.cfg.nocache = 1; | ||
480 | if (ctx.cfg.nocache) | 484 | if (ctx.cfg.nocache) |
481 | ctx.cfg.cache_size = 0; | 485 | ctx.cfg.cache_size = 0; |
482 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, | 486 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, |
483 | ctx.qry.raw, ttl, process_request, &ctx); | 487 | ctx.qry.raw, ttl, process_request, &ctx); |
484 | if (err) | 488 | if (err) |
485 | cgit_print_error(fmt("Error processing page: %s (%d)", | 489 | cgit_print_error(fmt("Error processing page: %s (%d)", |
486 | strerror(err), err)); | 490 | strerror(err), err)); |
487 | return err; | 491 | return err; |
488 | } | 492 | } |