diff --git a/src/pgm_receiver.cpp b/src/pgm_receiver.cpp index 01b95b25..b0e92f98 100644 --- a/src/pgm_receiver.cpp +++ b/src/pgm_receiver.cpp @@ -235,6 +235,8 @@ void zmq::pgm_receiver_t::timer_event (int token) { zmq_assert (token == rx_timer_id); + // Timer cancels on return by poller_base. + has_rx_timer = false; in_event (); } diff --git a/src/pgm_sender.cpp b/src/pgm_sender.cpp index 82a37abb..3fc0d902 100644 --- a/src/pgm_sender.cpp +++ b/src/pgm_sender.cpp @@ -188,11 +188,15 @@ void zmq::pgm_sender_t::out_event () void zmq::pgm_sender_t::timer_event (int token) { - if (token == rx_timer_id) + // Timer cancels on return by poller_base. + if (token == rx_timer_id) { + has_rx_timer = false; in_event (); - - zmq_assert (token == tx_timer_id); - out_event (); + } else if (token == tx_timer_id) { + has_tx_timer = false; + out_event (); + } else + zmq_assert (false); } #endif