aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2025-10-07 18:48:44 -0700
committerGarrett D'Amore <garrett@damore.org>2025-10-07 18:48:44 -0700
commit07191755f3a38cbac48d15523095136f69d8f772 (patch)
tree2d9209adc4c9e3774a88b8d2581513ea137e3ca2 /src/supplemental
parent46ade0691f41ac01cb5304b82cc67e99cd280a6d (diff)
downloadnng-07191755f3a38cbac48d15523095136f69d8f772.tar.gz
nng-07191755f3a38cbac48d15523095136f69d8f772.tar.bz2
nng-07191755f3a38cbac48d15523095136f69d8f772.zip
http: implement nng_http_next_header
Diffstat (limited to 'src/supplemental')
-rw-r--r--src/supplemental/http/http_conn.c32
-rw-r--r--src/supplemental/http/http_public.c15
2 files changed, 47 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)
{
diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c
index 5c7d8a77..419632fe 100644
--- a/src/supplemental/http/http_public.c
+++ b/src/supplemental/http/http_public.c
@@ -28,6 +28,21 @@ nng_http_get_header(nng_http *conn, const char *key)
}
nng_err
+nng_http_next_header(
+ nng_http *conn, const char **key, const char **val, void **ptr)
+{
+#ifdef NNG_SUP_HTTP
+ return (nni_http_next_header(conn, key, val, ptr));
+#else
+ NNI_ARG_UNUSED(conn);
+ NNI_ARG_UNUSED(key);
+ NNI_ARG_UNUSED(val);
+ NNI_ARG_UNUSED(ptr);
+ return (NNG_ENOTSUP);
+#endif
+}
+
+nng_err
nng_http_set_header(nng_http *conn, const char *key, const char *val)
{
#ifdef NNG_SUPP_HTTP