aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http/http_msg.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-06-15 12:50:03 -0700
committerGarrett D'Amore <garrett@damore.org>2018-06-15 13:39:29 -0700
commit5ecea06b1f39a93735e8b2f711b125d0b1a84d16 (patch)
tree843c699c3618328856c0b373a4b49b75205bf234 /src/supplemental/http/http_msg.c
parent16088417694de3d3300ae8429c20e944128d3f52 (diff)
downloadnng-5ecea06b1f39a93735e8b2f711b125d0b1a84d16.tar.gz
nng-5ecea06b1f39a93735e8b2f711b125d0b1a84d16.tar.bz2
nng-5ecea06b1f39a93735e8b2f711b125d0b1a84d16.zip
fixes #539 Feature request: customizable http error page
Diffstat (limited to 'src/supplemental/http/http_msg.c')
-rw-r--r--src/supplemental/http/http_msg.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/supplemental/http/http_msg.c b/src/supplemental/http/http_msg.c
index bc51e408..ff9764bf 100644
--- a/src/supplemental/http/http_msg.c
+++ b/src/supplemental/http/http_msg.c
@@ -54,6 +54,7 @@ struct nng_http_res {
char * buf;
size_t bufsz;
bool parsed;
+ bool iserr;
};
static int
@@ -375,6 +376,7 @@ nni_http_res_set_data(nni_http_res *res, const void *data, size_t size)
if ((rv = http_set_content_length(&res->data, &res->hdrs)) != 0) {
http_entity_set_data(&res->data, NULL, 0);
}
+ res->iserr = false;
return (rv);
}
@@ -401,9 +403,16 @@ nni_http_res_copy_data(nni_http_res *res, const void *data, size_t size)
http_entity_set_data(&res->data, NULL, 0);
return (rv);
}
+ res->iserr = false;
return (0);
}
+bool
+nni_http_res_is_error(nni_http_res *res)
+{
+ return (res->iserr);
+}
+
static int
http_parse_header(nni_list *hdrs, void *line)
{
@@ -962,7 +971,7 @@ static struct {
};
const char *
-http_reason(uint16_t code)
+nni_http_reason(uint16_t code)
{
for (int i = 0; http_status[i].code != 0; i++) {
if (http_status[i].code == code) {
@@ -975,14 +984,14 @@ http_reason(uint16_t code)
const char *
nni_http_res_get_reason(nni_http_res *res)
{
- return (res->rsn ? res->rsn : http_reason(res->code));
+ return (res->rsn ? res->rsn : nni_http_reason(res->code));
}
int
nni_http_res_set_reason(nni_http_res *res, const char *reason)
{
if ((reason != NULL) &&
- (strcmp(reason, http_reason(res->code)) == 0)) {
+ (strcmp(reason, nni_http_reason(res->code)) == 0)) {
reason = NULL;
}
return (http_set_string(&res->rsn, reason));
@@ -1009,7 +1018,7 @@ nni_http_res_alloc_error(nni_http_res **resp, uint16_t err)
"<p align=\"center\">"
"<span style=\"font-size: 24px; font-family: Arial, sans serif;\">"
"%s</span></p></body>",
- err, http_reason(err), err, http_reason(err));
+ err, nni_http_reason(err), err, nni_http_reason(err));
res->code = err;
if (((rv = nni_http_res_set_header(
@@ -1017,7 +1026,8 @@ nni_http_res_alloc_error(nni_http_res **resp, uint16_t err)
((rv = nni_http_res_copy_data(res, html, strlen(html))) != 0)) {
nni_http_res_free(res);
} else {
- *resp = res;
+ res->iserr = true;
+ *resp = res;
}
return (rv);
}