mirror of
https://github.com/cesanta/mongoose.git
synced 2024-11-24 19:19:00 +08:00
Merge pull request #92 from jmucchiello/send_http_error
Send http error
This commit is contained in:
commit
7bd9a85897
33
mongoose.c
33
mongoose.c
@ -915,24 +915,27 @@ static void send_http_error(struct mg_connection *conn, int status,
|
||||
int len = 0;
|
||||
|
||||
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
|
||||
if (status > 199 && status != 204 && status != 304) {
|
||||
len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
|
||||
buf[len++] = '\n';
|
||||
// Errors 1xx, 204 and 304 MUST NOT send a body
|
||||
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);
|
||||
va_start(ap, fmt);
|
||||
len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, 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__)
|
||||
|
@ -67,6 +67,7 @@ struct mg_callbacks {
|
||||
const char *path, size_t *data_len);
|
||||
void (*init_lua)(struct mg_connection *, void *lua_context);
|
||||
void (*upload)(struct mg_connection *, const char *file_name);
|
||||
int (*http_error)(struct mg_connection *, int status);
|
||||
};
|
||||
|
||||
// Start web server.
|
||||
|
Loading…
Reference in New Issue
Block a user