|
diff --git a/cache.c b/cache.c index b034c48..0ffa502 100644 --- a/ cache.c+++ b/ cache.c |
|
@@ -12,3 +12,3 @@ const int NOLOCK = -1; |
12 | |
12 | |
13 | int cache_lookup(struct cacheitem *item) |
13 | void cache_prepare(struct cacheitem *item) |
14 | { |
14 | { |
@@ -32,2 +32,6 @@ int cache_lookup(struct cacheitem *item) |
32 | } |
32 | } |
| |
33 | } |
| |
34 | |
| |
35 | int cache_exist(struct cacheitem *item) |
| |
36 | { |
33 | if (stat(item->name, &item->st)) { |
37 | if (stat(item->name, &item->st)) { |
|
|
diff --git a/cgit.c b/cgit.c index 110face..7f14016 100644 --- a/ cgit.c+++ b/ cgit.c |
|
@@ -467,8 +467,6 @@ static void cgit_refresh_cache(struct cacheitem *item) |
467 | { |
467 | { |
| |
468 | cache_prepare(item); |
468 | top: |
469 | top: |
469 | if (!cache_lookup(item)) { |
470 | if (!cache_exist(item)) { |
470 | if (cache_lock(item)) { |
471 | if (!cache_lock(item)) { |
471 | cgit_fill_cache(item); |
| |
472 | cache_unlock(item); |
| |
473 | } else { |
| |
474 | sched_yield(); |
472 | sched_yield(); |
@@ -476,7 +474,9 @@ static void cgit_refresh_cache(struct cacheitem *item) |
476 | } |
474 | } |
477 | } else if (cache_expired(item)) { |
475 | if (!cache_exist(item)) |
478 | if (cache_lock(item)) { |
| |
479 | cgit_fill_cache(item); |
476 | cgit_fill_cache(item); |
480 | cache_unlock(item); |
477 | cache_unlock(item); |
481 | } |
478 | } else if (cache_expired(item) && cache_lock(item)) { |
| |
479 | if (cache_expired(item)) |
| |
480 | cgit_fill_cache(item); |
| |
481 | cache_unlock(item); |
482 | } |
482 | } |
|
|
diff --git a/cgit.h b/cgit.h index 1e084d4..3b0994a 100644 --- a/ cgit.h+++ b/ cgit.h |
|
@@ -58,5 +58,6 @@ extern int cgit_read_config(const char *filename, configfn fn); |
58 | |
58 | |
59 | extern int cache_lookup(struct cacheitem *item); |
59 | extern void cache_prepare(struct cacheitem *item); |
60 | extern int cache_lock(struct cacheitem *item); |
60 | extern int cache_lock(struct cacheitem *item); |
61 | extern int cache_unlock(struct cacheitem *item); |
61 | extern int cache_unlock(struct cacheitem *item); |
| |
62 | extern int cache_exist(struct cacheitem *item); |
62 | extern int cache_expired(struct cacheitem *item); |
63 | extern int cache_expired(struct cacheitem *item); |
|