summaryrefslogtreecommitdiff
path: root/src/c/request.c
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2010-01-26 14:59:19 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2010-01-26 14:59:19 -0500
commit703661dcfcf96e23acedf7c2a6d36cda3fb68bc6 (patch)
treeee5f39838aeadd38e02c34783400c48d5f2899e9 /src/c/request.c
parentfba3039a03ae55a080b530665cfa0a9271f55d98 (diff)
Handling errors during commit
Diffstat (limited to 'src/c/request.c')
-rw-r--r--src/c/request.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/c/request.c b/src/c/request.c
index 1a2c0a93..247ae92c 100644
--- a/src/c/request.c
+++ b/src/c/request.c
@@ -339,7 +339,20 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
fk = uw_begin(ctx, rc->path_copy);
if (fk == SUCCESS || fk == RETURN_INDIRECTLY) {
uw_commit(ctx);
- return SERVED;
+ if (uw_has_error(ctx)) {
+ log_error(logger_data, "Fatal error: %s\n", uw_error_message(ctx));
+
+ uw_reset_keep_error_message(ctx);
+ on_failure(ctx);
+ uw_write_header(ctx, "Content-type: text/html\r\n");
+ uw_write(ctx, "<html><head><title>Fatal Error</title></head><body>");
+ uw_write(ctx, "Fatal error: ");
+ uw_write(ctx, uw_error_message(ctx));
+ uw_write(ctx, "\n</body></html>");
+
+ return FAILED;
+ } else
+ return SERVED;
} else if (fk == BOUNDED_RETRY) {
if (retries_left) {
log_debug(logger_data, "Error triggers bounded retry: %s\n", uw_error_message(ctx));