From ebfac5179796a4f090e29ecb15c0008113dc55f3 Mon Sep 17 00:00:00 2001 From: Greg Hazel Date: Tue, 20 Mar 2018 15:12:07 -0700 Subject: [PATCH] Call underlying bev ctrl GET_FD on filtered bufferevents Fixes: #611 Fixes: #610 (cherry picked from commit 4055081499cba32642dd72427a8f9d3ad7e50e79) --- bufferevent_filter.c | 3 +-- test/regress_bufferevent.c | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bufferevent_filter.c b/bufferevent_filter.c index d9e8540f..858d4684 100644 --- a/bufferevent_filter.c +++ b/bufferevent_filter.c @@ -605,6 +605,7 @@ be_filter_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op, data->ptr = bevf->underlying; return 0; case BEV_CTRL_SET_FD: + case BEV_CTRL_GET_FD: bevf = upcast(bev); if (bevf->underlying && @@ -614,8 +615,6 @@ be_filter_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op, } EVUTIL_FALLTHROUGH; - case BEV_CTRL_GET_FD: - EVUTIL_FALLTHROUGH; case BEV_CTRL_CANCEL_ALL: EVUTIL_FALLTHROUGH; default: diff --git a/test/regress_bufferevent.c b/test/regress_bufferevent.c index 249985e9..6d69655f 100644 --- a/test/regress_bufferevent.c +++ b/test/regress_bufferevent.c @@ -569,8 +569,8 @@ test_bufferevent_filters_impl(int use_pair, int disable) tt_ptr_op(bufferevent_get_underlying(bev1), ==, bev1_base); tt_ptr_op(bufferevent_get_underlying(bev2), ==, bev2_base); - tt_int_op(bufferevent_getfd(bev1), ==, -1); - tt_int_op(bufferevent_getfd(bev2), ==, -1); + tt_int_op(bufferevent_getfd(bev1), ==, bufferevent_getfd(bev1_base)); + tt_int_op(bufferevent_getfd(bev2), ==, bufferevent_getfd(bev2_base)); bufferevent_disable(bev1, EV_READ); bufferevent_enable(bev2, EV_READ);