diff options
Diffstat (limited to 'src/supplemental/http')
| -rw-r--r-- | src/supplemental/http/http_api.h | 4 | ||||
| -rw-r--r-- | src/supplemental/http/http_conn.c | 15 | ||||
| -rw-r--r-- | src/supplemental/http/http_public.c | 14 |
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 |
