|
diff --git a/cache.c b/cache.c index a996109..aa97ae1 100644 --- a/ cache.c+++ b/ cache.c |
|
@@ -249,15 +249,20 @@ static int process_slot(struct cache_slot *slot) |
249 | close_slot(slot); |
249 | close_slot(slot); |
250 | unlock_slot(slot, 1); |
250 | unlock_slot(slot, 1); |
251 | slot->cache_fd = slot->lock_fd; |
251 | slot->cache_fd = slot->lock_fd; |
252 | } |
252 | } |
253 | } |
253 | } |
254 | } |
254 | } |
255 | print_slot(slot); |
255 | if ((err = print_slot(slot)) != 0) { |
| |
256 | cache_log("[cgit] error printing cache %s: %s (%d)\n", |
| |
257 | slot->cache_name, |
| |
258 | strerror(err), |
| |
259 | err); |
| |
260 | } |
256 | close_slot(slot); |
261 | close_slot(slot); |
257 | return 0; |
262 | return err; |
258 | } |
263 | } |
259 | |
264 | |
260 | /* If the cache slot does not exist (or its key doesn't match the |
265 | /* If the cache slot does not exist (or its key doesn't match the |
261 | * current key), lets try to create a new cache slot for this |
266 | * current key), lets try to create a new cache slot for this |
262 | * request. If this fails (for whatever reason), lets just generate |
267 | * request. If this fails (for whatever reason), lets just generate |
263 | * the content without caching it and fool the caller to belive |
268 | * the content without caching it and fool the caller to belive |
@@ -286,13 +291,18 @@ static int process_slot(struct cache_slot *slot) |
286 | // slot, we might get a race condition with a concurrent |
291 | // slot, we might get a race condition with a concurrent |
287 | // writer for the same cache slot (with a different key). |
292 | // writer for the same cache slot (with a different key). |
288 | // Lets avoid such a race by just printing the content of |
293 | // Lets avoid such a race by just printing the content of |
289 | // the lock file. |
294 | // the lock file. |
290 | slot->cache_fd = slot->lock_fd; |
295 | slot->cache_fd = slot->lock_fd; |
291 | unlock_slot(slot, 1); |
296 | unlock_slot(slot, 1); |
292 | err = print_slot(slot); |
297 | if ((err = print_slot(slot)) != 0) { |
| |
298 | cache_log("[cgit] error printing cache %s: %s (%d)\n", |
| |
299 | slot->cache_name, |
| |
300 | strerror(err), |
| |
301 | err); |
| |
302 | } |
293 | close_slot(slot); |
303 | close_slot(slot); |
294 | return err; |
304 | return err; |
295 | } |
305 | } |
296 | |
306 | |
297 | /* Print cached content to stdout, generate the content if necessary. */ |
307 | /* Print cached content to stdout, generate the content if necessary. */ |
298 | int cache_process(int size, const char *path, const char *key, int ttl, |
308 | int cache_process(int size, const char *path, const char *key, int ttl, |
|
|
diff --git a/cgit.c b/cgit.c index 2036ceb..ac882c3 100644 --- a/ cgit.c+++ b/ cgit.c |
|
@@ -377,10 +377,10 @@ int main(int argc, const char **argv) |
377 | ctx.page.expires += ttl*60; |
377 | ctx.page.expires += ttl*60; |
378 | if (ctx.cfg.nocache) |
378 | if (ctx.cfg.nocache) |
379 | ctx.cfg.cache_size = 0; |
379 | ctx.cfg.cache_size = 0; |
380 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, |
380 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, |
381 | ctx.qry.raw, ttl, process_request, &ctx); |
381 | ctx.qry.raw, ttl, process_request, &ctx); |
382 | if (err) |
382 | if (err) |
383 | cache_log("[cgit] error %d - %s\n", |
383 | cgit_print_error(fmt("Error processing page: %s (%d)", |
384 | err, strerror(err)); |
384 | strerror(err), err)); |
385 | return err; |
385 | return err; |
386 | } |
386 | } |
|