diff options
author | Martin Lucina <martin@lucina.net> | 2012-02-16 10:05:18 +0900 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2012-02-16 10:05:18 +0900 |
commit | 858b8ad76757624464c139be2367f0dce53f8c3b (patch) | |
tree | bf174496a722d151d33e861f9bdd43a199007b1d /src/pgm_sender.cpp | |
parent | cfba1f07987434263843f4aaee11ec088ec6ced3 (diff) |
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 <martin@lucina.net>
Diffstat (limited to 'src/pgm_sender.cpp')
-rw-r--r-- | src/pgm_sender.cpp | 10 |
1 files changed, 0 insertions, 10 deletions
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 () |