Yes, but it may be this weekend before I can get to it.

On Fri, Jul 24, 2015 at 1:30 AM, Mark Ellzey <[email protected]> wrote:

> Can put this up as a pull request on github to review and accept
>
> On Thu, Jul 23, 2015 at 6:56 PM Bill Vaughan <[email protected]>
> wrote:
>
>> Hi all,
>>
>> I added bufferevent pairs to my project a few weeks ago as it was perfect
>> for what I needed.  Got it all working nicely but valgrind was reporting a
>> leak.  I finally tracked down the culprit to the bufferevent pair flush
>> code.
>>
>> Here is the patch for libevent 2.0.22. The lock was being taken and not
>> released if the mode was BEV_NORMAL.
>>
>> [bvaughan@dev-client tproxy]$ git diff
>> diff --git a/libevent-2.0.22-stable/bufferevent_pair.c
>> b/libevent-2.0.22-stable/bufferevent_pair.c
>> index e9ed9f5..2a77dc7 100644
>> --- a/libevent-2.0.22-stable/bufferevent_pair.c
>> +++ b/libevent-2.0.22-stable/bufferevent_pair.c
>> @@ -284,14 +284,15 @@ be_pair_flush(struct bufferevent *bev, short iotype,
>>  {
>>         struct bufferevent_pair *bev_p = upcast(bev);
>>         struct bufferevent *partner;
>> -       incref_and_lock(bev);
>> +
>>         if (!bev_p->partner)
>>                 return -1;
>>
>> -       partner = downcast(bev_p->partner);
>> +   if (mode == BEV_NORMAL)
>> +      return 0;
>>
>> -       if (mode == BEV_NORMAL)
>> -               return 0;
>> +       incref_and_lock(bev);
>> +   partner = downcast(bev_p->partner);
>>
>>         if ((iotype & EV_READ) != 0)
>>                 be_pair_transfer(partner, bev, 1);
>>
>>
>> Thanks,
>> -Bill
>>
>>

Reply via email to