Skip to content
Snippets Groups Projects
Commit 5fb275e1 authored by Sergey Lyubka's avatar Sergey Lyubka
Browse files

Added URL rewrites for HTTP errors, to allow for error pages.

parent 9390c66b
No related branches found
No related tags found
No related merge requests found
...@@ -540,9 +540,24 @@ static const char *status_code_to_str(int status_code) { ...@@ -540,9 +540,24 @@ static const char *status_code_to_str(int status_code) {
static void send_http_error(struct connection *conn, int code, static void send_http_error(struct connection *conn, int code,
const char *fmt, ...) { const char *fmt, ...) {
const char *message = status_code_to_str(code); const char *message = status_code_to_str(code);
const char *rewrites = conn->server->config_options[URL_REWRITES];
char headers[200], body[200]; char headers[200], body[200];
struct vec a, b;
va_list ap; va_list ap;
int body_len, headers_len; int body_len, headers_len, match_code;
// Handle error code rewrites
while ((rewrites = next_option(rewrites, &a, &b)) != NULL) {
if ((match_code = atoi(a.ptr)) > 0 && match_code == code) {
conn->mg_conn.status_code = 302;
mg_printf(&conn->mg_conn, "HTTP/1.1 %d Moved\r\n"
"Location: %.*s?code=%d&orig_uri=%s\r\n\r\n",
conn->mg_conn.status_code, b.len, b.ptr, code,
conn->mg_conn.uri);
close_local_endpoint(conn);
return;
}
}
conn->mg_conn.status_code = code; conn->mg_conn.status_code = code;
body_len = mg_snprintf(body, sizeof(body), "%d %s\n", code, message); body_len = mg_snprintf(body, sizeof(body), "%d %s\n", code, message);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment