label parts return false for getsockopt(ZM_RCVMORE); should return true if there are more parts available

Description

Sending a message from a REQ socket to a XREP socket exposes all of the message parts generated by the system. The label parts used for routing over multiple hops do not return true when getsockopt(ZM_RCVMORE) is called. A message comprised of only labels is invalid, so clearly there are additional message parts available. This getsockopt() call should return true.

Environment

OSX intel, 3.02 master

Activity

Show:

Ian Barber September 18, 2012 at 6:36 AM

Labels functionality reverted

PieterP September 20, 2011 at 8:42 PM

OK, fixed and tested in 3-0 git master, thanks for the test case.

Chuck Remes September 17, 2011 at 7:49 PM

Testcase added to issues (255/3-0) to illustrate the problem. The above patch did not fix it for me.

PieterP September 16, 2011 at 5:04 PM

Fixed in 3-0 master, here's the patch:

diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 89cf835..543e3d2 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -596,7 +596,7 @@ int zmq::socket_base_t::recv (msg_t *msg_, int flags_) if (rcvlabel) msg_->reset_flags (msg_t::label); rcvmore = msg_->flags () & msg_t::more ? true : false; - if (rcvmore) + if (rcvmore || rcvlabel) msg_->reset_flags (msg_t::more); return 0; } @@ -617,7 +617,7 @@ int zmq::socket_base_t::recv (msg_t *msg_, int flags_) if (rcvlabel) msg_->reset_flags (msg_t::label); rcvmore = msg_->flags () & msg_t::more ? true : false; - if (rcvmore) + if (rcvmore || rcvlabel) msg_->reset_flags (msg_t::more); return 0; } @@ -656,7 +656,7 @@ int zmq::socket_base_t::recv (msg_t *msg_, int flags_) if (rcvlabel) msg_->reset_flags (msg_t::label); rcvmore = msg_->flags () & msg_t::more ? true : false; - if (rcvmore) + if (rcvmore || rcvlabel) msg_->reset_flags (msg_t::more); return 0; }
Won't Fix

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Created September 16, 2011 at 4:57 PM
Updated September 18, 2012 at 6:36 AM
Resolved September 18, 2012 at 6:36 AM