mirror of
https://github.com/cesanta/mongoose.git
synced 2025-06-12 12:42:50 +08:00
http_error callback
Allow user to display status code errors
This commit is contained in:
parent
1cb094e059
commit
2efc5d9fce
33
mongoose.c
33
mongoose.c
@ -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)) {
|
||||||
|
buf[0] = '\0';
|
||||||
|
|
||||||
// Errors 1xx, 204 and 304 MUST NOT send a body
|
// Errors 1xx, 204 and 304 MUST NOT send a body
|
||||||
if (status > 199 && status != 204 && status != 304) {
|
if (status > 199 && status != 204 && status != 304) {
|
||||||
len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
|
len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
|
||||||
buf[len++] = '\n';
|
buf[len++] = '\n';
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap);
|
len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
}
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
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 {
|
|||||||
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.
|
||||||
|
Loading…
Reference in New Issue
Block a user