Unverified Commit 9872daa2 authored by Luca Boccassi's avatar Luca Boccassi Committed by GitHub

Merge pull request #2912 from ZMQers/socket-base-signaler-unreachable-code

 Problem: unreachable code around socket_base_t::add/remove_signaler
parents 3491fd04 5b510656
...@@ -312,9 +312,9 @@ int zmq::socket_base_t::check_protocol (const std::string &protocol_) ...@@ -312,9 +312,9 @@ int zmq::socket_base_t::check_protocol (const std::string &protocol_)
return -1; return -1;
} }
// Check whether socket type and transport protocol match. // Check whether socket type and transport protocol match.
// Specifically, multicast protocols can't be combined with // Specifically, multicast protocols can't be combined with
// bi-directional messaging patterns (socket types). // bi-directional messaging patterns (socket types).
#if defined ZMQ_HAVE_OPENPGM || defined ZMQ_HAVE_NORM #if defined ZMQ_HAVE_OPENPGM || defined ZMQ_HAVE_NORM
if ((protocol_ == "pgm" || protocol_ == "epgm" || protocol_ == "norm") if ((protocol_ == "pgm" || protocol_ == "epgm" || protocol_ == "norm")
&& options.type != ZMQ_PUB && options.type != ZMQ_SUB && options.type != ZMQ_PUB && options.type != ZMQ_SUB
...@@ -487,32 +487,20 @@ int zmq::socket_base_t::leave (const char *group_) ...@@ -487,32 +487,20 @@ int zmq::socket_base_t::leave (const char *group_)
return rc; return rc;
} }
int zmq::socket_base_t::add_signaler (signaler_t *s_) void zmq::socket_base_t::add_signaler (signaler_t *s_)
{ {
scoped_optional_lock_t sync_lock (thread_safe ? &sync : NULL); zmq_assert (thread_safe);
if (!thread_safe) {
errno = EINVAL;
return -1;
}
scoped_lock_t sync_lock (sync);
((mailbox_safe_t *) mailbox)->add_signaler (s_); ((mailbox_safe_t *) mailbox)->add_signaler (s_);
return 0;
} }
int zmq::socket_base_t::remove_signaler (signaler_t *s_) void zmq::socket_base_t::remove_signaler (signaler_t *s_)
{ {
scoped_optional_lock_t sync_lock (thread_safe ? &sync : NULL); zmq_assert (thread_safe);
if (!thread_safe) {
errno = EINVAL;
return -1;
}
scoped_lock_t sync_lock (sync);
((mailbox_safe_t *) mailbox)->remove_signaler (s_); ((mailbox_safe_t *) mailbox)->remove_signaler (s_);
return 0;
} }
int zmq::socket_base_t::bind (const char *addr_) int zmq::socket_base_t::bind (const char *addr_)
...@@ -923,7 +911,7 @@ int zmq::socket_base_t::connect (const char *addr_) ...@@ -923,7 +911,7 @@ int zmq::socket_base_t::connect (const char *addr_)
} }
} }
// TBD - Should we check address for ZMQ_HAVE_NORM??? // TBD - Should we check address for ZMQ_HAVE_NORM???
#ifdef ZMQ_HAVE_OPENPGM #ifdef ZMQ_HAVE_OPENPGM
if (protocol == "pgm" || protocol == "epgm") { if (protocol == "pgm" || protocol == "epgm") {
......
...@@ -86,8 +86,8 @@ class socket_base_t : public own_t, ...@@ -86,8 +86,8 @@ class socket_base_t : public own_t,
int term_endpoint (const char *addr_); int term_endpoint (const char *addr_);
int send (zmq::msg_t *msg_, int flags_); int send (zmq::msg_t *msg_, int flags_);
int recv (zmq::msg_t *msg_, int flags_); int recv (zmq::msg_t *msg_, int flags_);
int add_signaler (signaler_t *s); void add_signaler (signaler_t *s);
int remove_signaler (signaler_t *s); void remove_signaler (signaler_t *s);
int close (); int close ();
// These functions are used by the polling mechanism to determine // These functions are used by the polling mechanism to determine
......
...@@ -130,8 +130,7 @@ int zmq::socket_poller_t::add (socket_base_t *socket_, ...@@ -130,8 +130,7 @@ int zmq::socket_poller_t::add (socket_base_t *socket_,
} }
} }
rc = socket_->add_signaler (signaler); socket_->add_signaler (signaler);
zmq_assert (rc == 0);
} }
item_t item = { item_t item = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment