Problem: connecter classes do not handle ZMQ_RECONNECT_IVL of -1 (#3163)

* Problem: connecter classes do not handle ZMQ_RECONNECT_IVL of -1

Solution: Add guards to prevent a reconnect timer from starting if ZMQ_RECONNECT_IVL is -1
(Issue 3158)
This commit is contained in:
ehilscher 2018-06-12 17:23:39 -05:00 committed by Luca Boccassi
parent 3a1e8f0704
commit 0867c38032
5 changed files with 30 additions and 20 deletions

View File

@ -176,11 +176,13 @@ void zmq::ipc_connecter_t::start_connecting ()
void zmq::ipc_connecter_t::add_reconnect_timer () void zmq::ipc_connecter_t::add_reconnect_timer ()
{ {
if (options.reconnect_ivl != -1) {
int rc_ivl = get_new_reconnect_ivl (); int rc_ivl = get_new_reconnect_ivl ();
add_timer (rc_ivl, reconnect_timer_id); add_timer (rc_ivl, reconnect_timer_id);
socket->event_connect_retried (endpoint, rc_ivl); socket->event_connect_retried (endpoint, rc_ivl);
timer_started = true; timer_started = true;
} }
}
int zmq::ipc_connecter_t::get_new_reconnect_ivl () int zmq::ipc_connecter_t::get_new_reconnect_ivl ()
{ {

View File

@ -268,11 +268,13 @@ void zmq::socks_connecter_t::error ()
void zmq::socks_connecter_t::start_timer () void zmq::socks_connecter_t::start_timer ()
{ {
if (options.reconnect_ivl != -1) {
const int interval = get_new_reconnect_ivl (); const int interval = get_new_reconnect_ivl ();
add_timer (interval, reconnect_timer_id); add_timer (interval, reconnect_timer_id);
_status = waiting_for_reconnect_time; _status = waiting_for_reconnect_time;
_socket->event_connect_retried (_endpoint, interval); _socket->event_connect_retried (_endpoint, interval);
} }
}
int zmq::socks_connecter_t::get_new_reconnect_ivl () int zmq::socks_connecter_t::get_new_reconnect_ivl ()
{ {

View File

@ -226,11 +226,13 @@ void zmq::tcp_connecter_t::add_connect_timer ()
void zmq::tcp_connecter_t::add_reconnect_timer () void zmq::tcp_connecter_t::add_reconnect_timer ()
{ {
if (options.reconnect_ivl != -1) {
const int interval = get_new_reconnect_ivl (); const int interval = get_new_reconnect_ivl ();
add_timer (interval, reconnect_timer_id); add_timer (interval, reconnect_timer_id);
_socket->event_connect_retried (_endpoint, interval); _socket->event_connect_retried (_endpoint, interval);
_reconnect_timer_started = true; _reconnect_timer_started = true;
} }
}
int zmq::tcp_connecter_t::get_new_reconnect_ivl () int zmq::tcp_connecter_t::get_new_reconnect_ivl ()
{ {

View File

@ -178,11 +178,13 @@ void zmq::tipc_connecter_t::start_connecting ()
void zmq::tipc_connecter_t::add_reconnect_timer () void zmq::tipc_connecter_t::add_reconnect_timer ()
{ {
if (options.reconnect_ivl != -1) {
int rc_ivl = get_new_reconnect_ivl (); int rc_ivl = get_new_reconnect_ivl ();
add_timer (rc_ivl, reconnect_timer_id); add_timer (rc_ivl, reconnect_timer_id);
socket->event_connect_retried (endpoint, rc_ivl); socket->event_connect_retried (endpoint, rc_ivl);
timer_started = true; timer_started = true;
} }
}
int zmq::tipc_connecter_t::get_new_reconnect_ivl () int zmq::tipc_connecter_t::get_new_reconnect_ivl ()
{ {

View File

@ -178,11 +178,13 @@ void zmq::vmci_connecter_t::start_connecting ()
void zmq::vmci_connecter_t::add_reconnect_timer () void zmq::vmci_connecter_t::add_reconnect_timer ()
{ {
if (options.reconnect_ivl != -1) {
int rc_ivl = get_new_reconnect_ivl (); int rc_ivl = get_new_reconnect_ivl ();
add_timer (rc_ivl, reconnect_timer_id); add_timer (rc_ivl, reconnect_timer_id);
socket->event_connect_retried (endpoint, rc_ivl); socket->event_connect_retried (endpoint, rc_ivl);
timer_started = true; timer_started = true;
} }
}
int zmq::vmci_connecter_t::get_new_reconnect_ivl () int zmq::vmci_connecter_t::get_new_reconnect_ivl ()
{ {