problem: ws_transport is missing the path the endpoint name

This commit is contained in:
Doron Somech 2020-02-06 09:32:34 +02:00
parent 071ec1a9bb
commit 652834296b
4 changed files with 10 additions and 13 deletions

View File

@ -67,7 +67,7 @@ zmq::ws_address_t::ws_address_t (const sockaddr *sa_, socklen_t sa_len_)
&& sa_len_ >= static_cast<socklen_t> (sizeof (_address.ipv6)))
memcpy (&_address.ipv6, sa_, sizeof (_address.ipv6));
_path = std::string ("/");
_path = std::string ("");
char hbuf[NI_MAXHOST];
const int rc = getnameinfo (addr (), addrlen (), hbuf, sizeof (hbuf), NULL,
@ -130,7 +130,7 @@ int zmq::ws_address_t::to_string (std::string &addr_) const
{
std::ostringstream os;
os << std::string ("ws://") << host () << std::string (":")
<< _address.port ();
<< _address.port () << _path;
addr_ = os.str ();
return 0;

View File

@ -124,10 +124,14 @@ void zmq::ws_listener_t::in_event ()
std::string zmq::ws_listener_t::get_socket_name (zmq::fd_t fd_,
socket_end_t socket_end_) const
{
if (_wss)
return zmq::get_socket_name<wss_address_t> (fd_, socket_end_);
std::string socket_name;
return zmq::get_socket_name<ws_address_t> (fd_, socket_end_);
if (_wss)
socket_name = zmq::get_socket_name<wss_address_t> (fd_, socket_end_);
else
socket_name = zmq::get_socket_name<ws_address_t> (fd_, socket_end_);
return socket_name + _address.path ();
}
int zmq::ws_listener_t::create_socket (const char *addr_)

View File

@ -46,7 +46,7 @@ int zmq::wss_address_t::to_string (std::string &addr_) const
{
std::ostringstream os;
os << std::string ("wss://") << host () << std::string (":")
<< _address.port ();
<< _address.port () << path ();
addr_ = os.str ();
return 0;

View File

@ -41,7 +41,6 @@ void test_roundtrip ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/roundtrip"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/roundtrip");
void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
@ -79,7 +78,6 @@ void test_heartbeat ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/heartbeat"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/heartbeat");
void *sc = test_context_socket (ZMQ_REQ);
@ -113,7 +111,6 @@ void test_short_message ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/short"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/short");
void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
@ -147,7 +144,6 @@ void test_large_message ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/large"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/short");
void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
@ -197,8 +193,6 @@ void test_curve ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (server, "ws://*:*/roundtrip"));
TEST_ASSERT_SUCCESS_ERRNO (zmq_getsockopt (server, ZMQ_LAST_ENDPOINT,
connect_address, &addr_length));
strcat (connect_address, "/roundtrip");
void *client = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (
@ -224,7 +218,6 @@ void test_mask_shared_msg ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/mask-shared"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/mask-shared");
void *sc = test_context_socket (ZMQ_DEALER);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));