[zeromq-dev] EFSM not always raised in 2.1.8

MinRK benjaminrk at gmail.com
Sun Jul 31 21:42:50 CEST 2011


Pieter,

I see that you renamed 2.1.8 to 2.1.8-rc.  I can't cut a pyzmq release
with code labeled as a release candidate, and this change has also
broken a few tools that track the current zeromq release (e.g.
homebrew) which had updated to point to 2.1.8 which no longer exists.

Does the fact that 2.1.8 is now an rc mean that there will not be a
2.1.8 release, and I should wait for 2.1.9, and tell homebrew to
rollback to 2.1.7 for now?

-MinRK

On Sat, Jul 30, 2011 at 11:34, MinRK <benjaminrk at gmail.com> wrote:
> On Sat, Jul 30, 2011 at 08:31, Pieter Hintjens <ph at 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 at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>



More information about the zeromq-dev mailing list