I can wait a day. No problemo

On Fri, Jul 24, 2015 at 3:41 AM Bill Vaughan <[email protected]> wrote:

> 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