diff options
author | Ben Gray <ben@benjamg.com> | 2011-10-27 13:59:54 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2011-10-27 13:59:54 +0200 |
commit | 9e000c8f26c99656dd967a8d15997b879af5817b (patch) | |
tree | 14e0972cd5c5fbc7cc002f557e70c99331e503c1 /src/dist.cpp | |
parent | 68ab5f87edd2436757ab92b22238a5a4114d7b0d (diff) |
Patch for issue LIBZMQ-275. Dealing with VSM in distribution when pipes fail to write.
Signed-off-by: Ben Gray <ben@benjamg.com>
Diffstat (limited to 'src/dist.cpp')
-rw-r--r-- | src/dist.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/dist.cpp b/src/dist.cpp index 795e13e..b4fae6f 100644 --- a/src/dist.cpp +++ b/src/dist.cpp @@ -137,6 +137,16 @@ void zmq::dist_t::distribute (msg_t *msg_, int flags_) return; } + if (msg_->is_vsm ()) { + for (pipes_t::size_type i = 0; i < matching; ++i) + write (pipes [i], msg_); + int rc = msg_->close(); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + return; + } + // Add matching-1 references to the message. We already hold one reference, // that's why -1. msg_->add_refs ((int) matching - 1); |