diff options
Diffstat (limited to 'src/supplemental/http')
| -rw-r--r-- | src/supplemental/http/http.h | 16 | ||||
| -rw-r--r-- | src/supplemental/http/http_msg.c | 26 |
2 files changed, 35 insertions, 7 deletions
diff --git a/src/supplemental/http/http.h b/src/supplemental/http/http.h index b28845ec..3ecce4c8 100644 --- a/src/supplemental/http/http.h +++ b/src/supplemental/http/http.h @@ -45,7 +45,8 @@ extern const char *nni_http_req_get_header(nni_http_req *, const char *); extern const char *nni_http_req_get_version(nni_http_req *); extern const char *nni_http_req_get_uri(nni_http_req *); extern const char *nni_http_req_get_method(nni_http_req *); -extern int nni_http_req_parse(nni_http_req *, void *, size_t, size_t *); +extern int nni_http_req_parse(nni_http_req *, void *, size_t, size_t *); +extern char *nni_http_req_headers(nni_http_req *); extern int nni_http_res_init(nni_http_res **); extern void nni_http_res_fini(nni_http_res *); @@ -60,12 +61,13 @@ extern const char *nni_http_res_get_header(nni_http_res *, const char *); extern const char *nni_http_res_get_version(nni_http_res *); extern const char *nni_http_res_get_reason(nni_http_res *); extern int nni_http_res_get_status(nni_http_res *); -extern int nni_http_res_parse(nni_http_res *, void *, size_t, size_t *); -extern int nni_http_res_set_data(nni_http_res *, const void *, size_t); -extern int nni_http_res_copy_data(nni_http_res *, const void *, size_t); -extern int nni_http_res_alloc_data(nni_http_res *, size_t); -extern void nni_http_res_get_data(nni_http_res *, void **, size_t *); -extern int nni_http_res_init_error(nni_http_res **, uint16_t); +extern int nni_http_res_parse(nni_http_res *, void *, size_t, size_t *); +extern int nni_http_res_set_data(nni_http_res *, const void *, size_t); +extern int nni_http_res_copy_data(nni_http_res *, const void *, size_t); +extern int nni_http_res_alloc_data(nni_http_res *, size_t); +extern void nni_http_res_get_data(nni_http_res *, void **, size_t *); +extern int nni_http_res_init_error(nni_http_res **, uint16_t); +extern char *nni_http_res_headers(nni_http_res *); // HTTP status codes. This list is not exhaustive. enum { NNI_HTTP_STATUS_CONTINUE = 100, diff --git a/src/supplemental/http/http_msg.c b/src/supplemental/http/http_msg.c index 2e245868..8b3c6a7c 100644 --- a/src/supplemental/http/http_msg.c +++ b/src/supplemental/http/http_msg.c @@ -520,6 +520,32 @@ http_res_prepare(nni_http_res *res) return (rv); } +char * +nni_http_req_headers(nni_http_req *req) +{ + char * s; + size_t len; + + len = http_sprintf_headers(NULL, 0, &req->hdrs) + 1; + if ((s = nni_alloc(len)) != NULL) { + http_sprintf_headers(s, len, &req->hdrs); + } + return (s); +} + +char * +nni_http_res_headers(nni_http_res *res) +{ + char * s; + size_t len; + + len = http_sprintf_headers(NULL, 0, &res->hdrs) + 1; + if ((s = nni_alloc(len)) != NULL) { + http_sprintf_headers(s, len, &res->hdrs); + } + return (s); +} + int nni_http_req_get_buf(nni_http_req *req, void **data, size_t *szp) { |
