summaryrefslogtreecommitdiff
path: root/src/xrep.cpp
diff options
context:
space:
mode:
authorPieter Hintjens <ph@imatix.com>2010-08-11 17:05:19 +0200
committerPieter Hintjens <ph@imatix.com>2010-08-11 17:05:19 +0200
commit5be54b912029381736ee8b8798f95cc9a2544a70 (patch)
treebf4e6ab1f1b8e96ec018477884dad52851832a6b /src/xrep.cpp
parente74d350068e8a7d2becbd791f19e2c1ef20afae5 (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/xrep.cpp')
-rw-r--r--src/xrep.cpp9
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;