From b3dec3df4038cf76821f43717673456c7f691030 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 2 Jun 2012 10:54:49 -0400 Subject: Avoid redundant rollbacks --- src/c/request.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/c/request.c b/src/c/request.c index 9f8cab36..a697ba44 100644 --- a/src/c/request.c +++ b/src/c/request.c @@ -503,6 +503,8 @@ request_result uw_request(uw_request_context rc, uw_context ctx, uw_write(ctx, uw_error_message(ctx)); uw_write(ctx, "\n"); + try_rollback(ctx, 0, logger_data, log_error); + return FAILED; } } else @@ -515,8 +517,6 @@ request_result uw_request(uw_request_context rc, uw_context ctx, else { log_error(logger_data, "Fatal error (out of retries): %s\n", uw_error_message(ctx)); - try_rollback(ctx, 0, logger_data, log_error); - if (!had_error && uw_get_app(ctx)->on_error) { had_error = 1; strcpy(errmsg, uw_error_message(ctx)); @@ -528,6 +528,8 @@ request_result uw_request(uw_request_context rc, uw_context ctx, uw_write(ctx, uw_error_message(ctx)); uw_write(ctx, "\n"); + try_rollback(ctx, 0, logger_data, log_error); + return FAILED; } } @@ -536,8 +538,6 @@ request_result uw_request(uw_request_context rc, uw_context ctx, else if (fk == FATAL) { log_error(logger_data, "Fatal error: %s\n", uw_error_message(ctx)); - try_rollback(ctx, 0, logger_data, log_error); - if (uw_get_app(ctx)->on_error && !had_error) { had_error = 1; strcpy(errmsg, uw_error_message(ctx)); @@ -550,13 +550,13 @@ request_result uw_request(uw_request_context rc, uw_context ctx, uw_write(ctx, uw_error_message(ctx)); uw_write(ctx, "\n"); + try_rollback(ctx, 0, logger_data, log_error); + return FAILED; } } else { log_error(logger_data, "Unknown uw_handle return code!\n"); - try_rollback(ctx, 0, logger_data, log_error); - if (uw_get_app(ctx)->on_error && !had_error) { had_error = 1; strcpy(errmsg, "Unknown uw_handle return code"); @@ -566,6 +566,8 @@ request_result uw_request(uw_request_context rc, uw_context ctx, uw_write_header(ctx, "Content-type: text/plain\r\n"); uw_write(ctx, "Unknown uw_handle return code!\n"); + try_rollback(ctx, 0, logger_data, log_error); + return FAILED; } } -- cgit v1.2.3