aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/c/request.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/c/request.c')
-rw-r--r--src/c/request.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/c/request.c b/src/c/request.c
index 5aee7bbe..d621aea7 100644
--- a/src/c/request.c
+++ b/src/c/request.c
@@ -444,8 +444,13 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
int len = strlen(inputs);
if (len+1 > rc->queryString_size) {
+ char *qs = realloc(rc->queryString, len+1);
+ if(qs == NULL) {
+ log_error(logger_data, "queryString is too long (not enough memory)\n");
+ return FAILED;
+ }
+ rc->queryString = qs;
rc->queryString_size = len+1;
- rc->queryString = realloc(rc->queryString, len+1);
}
strcpy(rc->queryString, inputs);
@@ -480,8 +485,13 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
on_success(ctx);
if (path_len + 1 > rc->path_copy_size) {
+ char *pc = realloc(rc->path_copy, path_len + 1);
+ if(pc == NULL) {
+ log_error(logger_data, "Path is too long (not enough memory)\n");
+ return FAILED;
+ }
+ rc->path_copy = pc;
rc->path_copy_size = path_len + 1;
- rc->path_copy = realloc(rc->path_copy, rc->path_copy_size);
}
strcpy(rc->path_copy, path);
@@ -503,14 +513,14 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
had_error = 1;
strcpy(errmsg, uw_error_message(ctx));
} else {
+ try_rollback(ctx, 0, logger_data, log_error);
+
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>");
- try_rollback(ctx, 0, logger_data, log_error);
-
return FAILED;
}
} else
@@ -527,14 +537,14 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
had_error = 1;
strcpy(errmsg, uw_error_message(ctx));
} else {
+ try_rollback(ctx, 0, logger_data, log_error);
+
uw_reset_keep_error_message(ctx);
on_failure(ctx);
uw_write_header(ctx, "Content-type: text/plain\r\n");
uw_write(ctx, "Fatal error (out of retries): ");
uw_write(ctx, uw_error_message(ctx));
uw_write(ctx, "\n");
-
- try_rollback(ctx, 0, logger_data, log_error);
return FAILED;
}
@@ -548,6 +558,8 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
had_error = 1;
strcpy(errmsg, uw_error_message(ctx));
} else {
+ try_rollback(ctx, 0, logger_data, log_error);
+
uw_reset_keep_error_message(ctx);
on_failure(ctx);
uw_write_header(ctx, "Content-type: text/html\r\n");
@@ -556,8 +568,6 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
uw_write(ctx, uw_error_message(ctx));
uw_write(ctx, "\n</body></html>");
- try_rollback(ctx, 0, logger_data, log_error);
-
return FAILED;
}
} else {
@@ -567,13 +577,13 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
had_error = 1;
strcpy(errmsg, "Unknown uw_handle return code");
} else {
+ try_rollback(ctx, 0, logger_data, log_error);
+
uw_reset_keep_request(ctx);
on_failure(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;
}
}