aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental/http')
-rw-r--r--src/supplemental/http/http_api.h4
-rw-r--r--src/supplemental/http/http_conn.c15
-rw-r--r--src/supplemental/http/http_public.c14
3 files changed, 23 insertions, 10 deletions
diff --git a/src/supplemental/http/http_api.h b/src/supplemental/http/http_api.h
index 74472f50..ca13bd09 100644
--- a/src/supplemental/http/http_api.h
+++ b/src/supplemental/http/http_api.h
@@ -72,8 +72,8 @@ extern void nni_http_read_chunks(
extern nni_http_req *nni_http_conn_req(nni_http_conn *);
extern nni_http_res *nni_http_conn_res(nni_http_conn *);
-extern nng_err nni_http_get_addr(
- nni_http_conn *, const char *, nng_sockaddr *);
+extern nng_err nni_http_peer_addr(nni_http_conn *, const nng_sockaddr **);
+extern nng_err nni_http_self_addr(nni_http_conn *, const nng_sockaddr **);
// Private to the server. (Used to support session hijacking.)
extern void nni_http_conn_set_ctx(nni_http_conn *, void *);
diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c
index ac549649..bb3a0882 100644
--- a/src/supplemental/http/http_conn.c
+++ b/src/supplemental/http/http_conn.c
@@ -22,6 +22,7 @@
#include "http_api.h"
#include "http_msg.h"
+#include "nng/nng.h"
// We insist that individual headers fit in 8K.
// If you need more than that, you need something we can't do.
@@ -160,13 +161,15 @@ nni_http_conn_close(nni_http_conn *conn)
}
nng_err
-nni_http_get_addr(nni_http_conn *conn, const char *opt, nng_sockaddr *addrp)
+nni_http_peer_addr(nni_http_conn *conn, const nng_sockaddr **sap)
{
- nng_err rv;
- nni_mtx_lock(&conn->mtx);
- rv = nng_stream_get_addr(conn->sock, opt, addrp);
- nni_mtx_unlock(&conn->mtx);
- return (rv);
+ return nng_stream_peer_addr(conn->sock, sap);
+}
+
+nng_err
+nni_http_self_addr(nni_http_conn *conn, const nng_sockaddr **sap)
+{
+ return nng_stream_self_addr(conn->sock, sap);
}
// http_buf_pull_up pulls the content of the read buffer back to the
diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c
index 8c225e5e..edf5e609 100644
--- a/src/supplemental/http/http_public.c
+++ b/src/supplemental/http/http_public.c
@@ -309,13 +309,23 @@ nng_http_read_response(nng_http *conn, nng_aio *aio)
nng_err
nng_http_remote_address(nng_http *conn, nng_sockaddr *addrp)
{
- return (nni_http_get_addr(conn, NNG_OPT_REMADDR, addrp));
+ const nng_sockaddr *sap;
+ nng_err rv;
+ if ((rv = nni_http_peer_addr(conn, &sap)) == NNG_OK) {
+ *addrp = *sap;
+ }
+ return (rv);
}
nng_err
nng_http_local_address(nng_http *conn, nng_sockaddr *addrp)
{
- return (nni_http_get_addr(conn, NNG_OPT_LOCADDR, addrp));
+ const nng_sockaddr *sap;
+ nng_err rv;
+ if ((rv = nni_http_self_addr(conn, &sap)) == NNG_OK) {
+ *addrp = *sap;
+ }
+ return (rv);
}
nng_err