# HG changeset patch # User Adam Chlipala # Date 1338648889 14400 # Node ID 27fdd78bd2f5605550a49eaf8a46d15adee7e21a # Parent b5f5e8d439c779fb6ff33e7db1b6398c85190d6f Avoid redundant rollbacks diff -r b5f5e8d439c7 -r 27fdd78bd2f5 src/c/request.c --- a/src/c/request.c Sat May 26 09:16:14 2012 -0400 +++ b/src/c/request.c Sat Jun 02 10:54:49 2012 -0400 @@ -503,6 +503,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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; } }