History

cache.c: do not ignore errors from print_slot()

If print_slot() fails, the client will be served an inferior response. This patch makes sure that such an error will be returned to main(), which in turn will try to inform about the error in the response itself. The error is also printed to the cache_log, i.e. stderr, which will make the error message appear in error_log (atleast when httpd==apache).

Lars Hjemli committed 18 years ago

Commit af2e7561 parent cdc6b2f2 files · +15 −5Browse files

Unified · Split

2 files
  1. cache.c +13 −3
  2. cgit.c +2 −2
cache.c+13−3
@@ -252,9 +252,14 @@ static int process_slot(struct cache_slot *slot) · 251 unmodified lines
252252 }
253253 }
254254 }
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+ }
256261 close_slot(slot);
257− return 0;
262+ return err;
258263 }
259264
260265 /* If the cache slot does not exist (or its key doesn't match the
@@ -289,7 +294,12 @@ static int process_slot(struct cache_slot *slot) · 28 unmodified lines
289294 // the lock file.
290295 slot->cache_fd = slot->lock_fd;
291296 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+ }
293303 close_slot(slot);
294304 return err;
295305 }
cgit.c+2−2
@@ -380,7 +380,7 @@ int main(int argc, const char **argv) · 379 unmodified lines
380380 err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root,
381381 ctx.qry.raw, ttl, process_request, &ctx);
382382 if (err)
383− cache_log("[cgit] error %d - %s\n",
384− err, strerror(err));
383+ cgit_print_error(fmt("Error processing page: %s (%d)",
384+ strerror(err), err));
385385 return err;
386386 }