From 858b8ad76757624464c139be2367f0dce53f8c3b Mon Sep 17 00:00:00 2001 From: Martin Lucina Date: Thu, 16 Feb 2012 10:05:18 +0900 Subject: Fix data loss for PUB/SUB and unidirectional transports (LIBZMQ-268) With the introduction of subscription forwarding, the first message sent on a PUB socket using a unidirectional transport (e.g. PGM) is always lost due to the "subscribe to all" being done asynchronously. This patch fixes the problem and also refactors the code to have a single point where the "subscribe to all" is performed. Signed-off-by: Martin Lucina --- src/pgm_sender.cpp | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'src/pgm_sender.cpp') diff --git a/src/pgm_sender.cpp b/src/pgm_sender.cpp index f68c044..dde6284 100644 --- a/src/pgm_sender.cpp +++ b/src/pgm_sender.cpp @@ -92,16 +92,6 @@ void xs::pgm_sender_t::plug (io_thread_t *io_thread_, session_base_t *session_) // Set POLLOUT for downlink_socket_handle. set_pollout (handle); - - // PGM is not able to pass subscriptions upstream, thus we have no idea - // what messages are peers interested in. Because of that we have to - // subscribe for all the messages. - msg_t msg; - msg.init_size (1); - *(unsigned char*) msg.data () = 1; - int rc = session_->write (&msg); - errno_assert (rc == 0); - session_->flush (); } void xs::pgm_sender_t::unplug () -- cgit v1.2.3