diff options
author | Pieter Hintjens <ph@imatix.com> | 2010-08-11 17:05:19 +0200 |
---|---|---|
committer | Pieter Hintjens <ph@imatix.com> | 2010-08-11 17:05:19 +0200 |
commit | 5be54b912029381736ee8b8798f95cc9a2544a70 (patch) | |
tree | bf4e6ab1f1b8e96ec018477884dad52851832a6b /src | |
parent | e74d350068e8a7d2becbd791f19e2c1ef20afae5 (diff) |
46 - Devices vulnerable to invalid messages
http://github.com/zeromq/zeromq2/issues#issue/46
Invalid messages are now discarded silently, instead of causing an assertion
failure.
Diffstat (limited to 'src')
-rw-r--r-- | src/xrep.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/xrep.cpp b/src/xrep.cpp index 978ed0b..5fd6cbb 100644 --- a/src/xrep.cpp +++ b/src/xrep.cpp @@ -143,8 +143,11 @@ int zmq::xrep_t::xsend (zmq_msg_t *msg_, int flags_) if (!more_out) { zmq_assert (!current_out); - // There's no such thing as prefix with no subsequent message. - zmq_assert (msg_->flags & ZMQ_MSG_MORE); + // If we have malformed message (prefix with no subsequent message) + // then just silently drop the message. + if ((msg_->flags & ZMQ_MSG_MORE) == 0) + return 0; + more_out = true; // Find the pipe associated with the identity stored in the prefix. @@ -154,7 +157,7 @@ int zmq::xrep_t::xsend (zmq_msg_t *msg_, int flags_) outpipes_t::iterator it = outpipes.find (identity); if (it == outpipes.end ()) return 0; - + // Remember the outgoing pipe. current_out = it->second.writer; |