On Sat, Jul 30, 2011 at 08:31, Pieter Hintjens <p...@imatix.com> wrote: > MinRK, > > OK, I've found the problem, I think. > > Issue is logged here: https://zeromq.jira.com/browse/LIBZMQ-236 > > When I backported the changes for issue 231 some error handling on > zmq_send() and zmq_recv() disappeared. > > The test case works properly now. > > Martin, can you review the attached patch? > > MinRK, the patched 2.1 master should now work, would you test that?
Thanks, it does appear to be fixed now. I don't imagine it should be a critical issue, since it requires that your application have a broken send/recv pattern, that is called more than once. It only came up because pyzmq's test suite has some checks for graceful error handling, so it makes a bunch of invalid calls. -MinRK > I'll make a 2.1.9 release if this proves to be a critical issue. > > Cheers > Pieter > > > > diff --git a/src/socket_base.cpp b/src/socket_base.cpp > index 10a4122..2167b0b 100644 > --- a/src/socket_base.cpp > +++ b/src/socket_base.cpp > @@ -492,6 +492,8 @@ int zmq::socket_base_t::send (::zmq_msg_t *msg_, int > flags_) > rc = xsend (msg_, flags_); > if (rc == 0) > return 0; > + if (unlikely (errno != EAGAIN)) > + return -1; > > // In case of non-blocking send we'll simply propagate > // the error - including EAGAIN - upwards. > @@ -541,6 +543,8 @@ int zmq::socket_base_t::recv (::zmq_msg_t *msg_, int > flags_) > > // Get the message. > int rc = xrecv (msg_, flags_); > + if (unlikely (rc != 0 && errno != EAGAIN)) > + return -1; > int err = errno; > > // Once every inbound_poll_rate messages check for signals and process > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > _______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev