Http and proxy refactor
This commit is contained in:
46
src/client.c
46
src/client.c
@ -366,14 +366,8 @@ int client_request_handler(sock *client, unsigned long client_num, unsigned int
|
||||
print("Reverse proxy for " BLD_STR "%s:%i" CLR_STR, conf->rev_proxy.hostname, conf->rev_proxy.port);
|
||||
http_remove_header_field(&res.hdr, "Date", HTTP_REMOVE_ALL);
|
||||
http_remove_header_field(&res.hdr, "Server", HTTP_REMOVE_ALL);
|
||||
|
||||
ret = rev_proxy_init(&req, &res, conf, client, &custom_status, err_msg);
|
||||
use_rev_proxy = ret == 0;
|
||||
|
||||
if (http_get_header_field(&res.hdr, "Date") == NULL)
|
||||
http_add_header_field(&res.hdr, "Date", http_get_date(buf0, sizeof(buf0)));
|
||||
if (http_get_header_field(&res.hdr, "Server") == NULL)
|
||||
http_add_header_field(&res.hdr, "Server", SERVER_STR);
|
||||
} else {
|
||||
print(ERR_STR "Unknown host type: %i" CLR_STR, conf->type);
|
||||
res.status = http_get_status(501);
|
||||
@ -386,35 +380,19 @@ int client_request_handler(sock *client, unsigned long client_num, unsigned int
|
||||
}
|
||||
if (!use_fastcgi && !use_rev_proxy && file == NULL &&
|
||||
((res.status->code >= 400 && res.status->code < 600) || err_msg[0] != 0)) {
|
||||
http_remove_header_field(&res.hdr, "Date", HTTP_REMOVE_ALL);
|
||||
http_remove_header_field(&res.hdr, "Server", HTTP_REMOVE_ALL);
|
||||
http_add_header_field(&res.hdr, "Date", http_get_date(buf0, sizeof(buf0)));
|
||||
http_add_header_field(&res.hdr, "Server", SERVER_STR);
|
||||
|
||||
// TODO list Locations on 3xx Redirects
|
||||
char color[16], mode[16];
|
||||
const char *icon, *document;
|
||||
if (res.status->code >= 100 && res.status->code < 200) {
|
||||
sprintf(mode, "info");
|
||||
sprintf(color, HTTP_COLOR_INFO);
|
||||
icon = http_info_icon;
|
||||
document = http_info_document;
|
||||
} else if (res.status->code >= 200 && res.status->code < 300) {
|
||||
sprintf(mode, "success");
|
||||
sprintf(color, HTTP_COLOR_SUCCESS);
|
||||
icon = http_success_icon;
|
||||
document = http_success_document;
|
||||
} else if (res.status->code >= 300 && res.status->code < 400) {
|
||||
sprintf(mode, "warning");
|
||||
sprintf(color, HTTP_COLOR_WARNING);
|
||||
icon = http_warning_icon;
|
||||
document = http_warning_document;
|
||||
} else if (res.status->code >= 400 && res.status->code < 600) {
|
||||
sprintf(mode, "error");
|
||||
sprintf(color, HTTP_COLOR_ERROR);
|
||||
icon = http_error_icon;
|
||||
document = http_error_document;
|
||||
}
|
||||
http_error_msg *http_msg = http_get_error_msg(res.status->code);
|
||||
sprintf(msg_pre_buf, document, res.status->code, res.status->msg,
|
||||
http_msg != NULL ? http_msg->err_msg : "", err_msg[0] != 0 ? err_msg : "");
|
||||
content_length = sprintf(msg_buf, http_default_document, res.status->code, res.status->msg,
|
||||
msg_pre_buf, mode, icon, color, host);
|
||||
const http_doc_info *info = http_get_status_info(res.status);
|
||||
const http_status_msg *http_msg = http_get_error_msg(res.status);
|
||||
|
||||
sprintf(msg_pre_buf, info->doc, res.status->code, res.status->msg,
|
||||
http_msg != NULL ? http_msg->msg : "", err_msg[0] != 0 ? err_msg : "");
|
||||
content_length = snprintf(msg_buf, sizeof(msg_buf), http_default_document, res.status->code,
|
||||
res.status->msg, msg_pre_buf, info->mode, info->icon, info->color, host);
|
||||
http_add_header_field(&res.hdr, "Content-Type", "text/html; charset=UTF-8");
|
||||
}
|
||||
if (content_length >= 0) {
|
||||
|
Reference in New Issue
Block a user