Commit 2efc5d9f authored by Joe Mucchiello's avatar Joe Mucchiello

http_error callback

Allow user to display status code errors
parent 1cb094e0
...@@ -915,24 +915,27 @@ static void send_http_error(struct mg_connection *conn, int status, ...@@ -915,24 +915,27 @@ static void send_http_error(struct mg_connection *conn, int status,
int len = 0; int len = 0;
conn->status_code = status; conn->status_code = status;
buf[0] = '\0'; if (conn->ctx->callbacks.http_error == NULL ||
conn->ctx->callbacks.http_error(conn, status)) {
// Errors 1xx, 204 and 304 MUST NOT send a body buf[0] = '\0';
if (status > 199 && status != 204 && status != 304) {
len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason); // Errors 1xx, 204 and 304 MUST NOT send a body
buf[len++] = '\n'; if (status > 199 && status != 204 && status != 304) {
len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
buf[len++] = '\n';
va_start(ap, fmt);
len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap);
va_end(ap);
}
DEBUG_TRACE(("[%s]", buf));
va_start(ap, fmt); mg_printf(conn, "HTTP/1.1 %d %s\r\n"
len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap); "Content-Length: %d\r\n"
va_end(ap); "Connection: %s\r\n\r\n", status, reason, len,
suggest_connection_header(conn));
conn->num_bytes_sent += mg_printf(conn, "%s", buf);
} }
DEBUG_TRACE(("[%s]", buf));
mg_printf(conn, "HTTP/1.1 %d %s\r\n"
"Content-Length: %d\r\n"
"Connection: %s\r\n\r\n", status, reason, len,
suggest_connection_header(conn));
conn->num_bytes_sent += mg_printf(conn, "%s", buf);
} }
#if defined(_WIN32) && !defined(__SYMBIAN32__) #if defined(_WIN32) && !defined(__SYMBIAN32__)
......
...@@ -67,6 +67,7 @@ struct mg_callbacks { ...@@ -67,6 +67,7 @@ struct mg_callbacks {
const char *path, size_t *data_len); const char *path, size_t *data_len);
void (*init_lua)(struct mg_connection *, void *lua_context); void (*init_lua)(struct mg_connection *, void *lua_context);
void (*upload)(struct mg_connection *, const char *file_name); void (*upload)(struct mg_connection *, const char *file_name);
int (*http_error)(struct mg_connection *, int status);
}; };
// Start web server. // Start web server.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment