diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-06-15 12:50:03 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-06-15 13:39:29 -0700 |
| commit | 5ecea06b1f39a93735e8b2f711b125d0b1a84d16 (patch) | |
| tree | 843c699c3618328856c0b373a4b49b75205bf234 /src/supplemental/http/http_msg.c | |
| parent | 16088417694de3d3300ae8429c20e944128d3f52 (diff) | |
| download | nng-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.c | 20 |
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); } |
