aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http/http_conn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental/http/http_conn.c')
-rw-r--r--src/supplemental/http/http_conn.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c
index 93068512..6f2ecef6 100644
--- a/src/supplemental/http/http_conn.c
+++ b/src/supplemental/http/http_conn.c
@@ -1372,6 +1372,38 @@ http_get_header(const nni_list *hdrs, const char *key)
return (NULL);
}
+static bool
+http_next_header(
+ const nni_list *hdrs, const char **key, const char **val, void **ptr)
+{
+ http_header *h;
+
+ if (*ptr == NULL) {
+ h = nni_list_first(hdrs);
+ } else {
+ h = nni_list_next(hdrs, *ptr);
+ }
+ if (h == NULL) {
+ return (false);
+ }
+
+ *ptr = h;
+ *key = h->name;
+ *val = h->value;
+ return (true);
+}
+
+bool
+nni_http_next_header(
+ nng_http *conn, const char **key, const char **val, void **ptr)
+{
+ if (conn->client) {
+ return (http_next_header(&conn->res.data.hdrs, key, val, ptr));
+ } else {
+ return (http_next_header(&conn->req.data.hdrs, key, val, ptr));
+ }
+}
+
const char *
nni_http_get_header(nng_http *conn, const char *key)
{