diff --git a/bufferevent_pair.c b/bufferevent_pair.c index 8154e17b..d80e5f81 100644 --- a/bufferevent_pair.c +++ b/bufferevent_pair.c @@ -307,15 +307,17 @@ 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; + incref_and_lock(bev); + + partner = downcast(bev_p->partner); + if ((iotype & EV_READ) != 0) be_pair_transfer(partner, bev, 1);