On Fri, Jul 10, 2020 at 12:25 PM Ruediger Pluem <rpl...@apache.org> wrote: > > I observed 36 which 0x24 or POLLHUP | POLLOUT for rtnevents and > 52 which is 0x34 or POLLHUP | POLLOUT | POLLERR for rtnevents
Thanks, so POLLHUP|POLLERR while POSIX says they are mutually exclusive.. I'd rather fix it with the below though: Index: modules/proxy/proxy_util.c =================================================================== --- modules/proxy/proxy_util.c (revision 1879448) +++ modules/proxy/proxy_util.c (working copy) @@ -4527,9 +4527,11 @@ PROXY_DECLARE(int) ap_proxy_tunnel_run(proxy_tunne } } - if (pfd->rtnevents & (APR_POLLIN | APR_POLLHUP) - || (tc->readable && tc->other->writable - && ap_filter_input_pending(tc->c) == OK)) { + if (tc->readable + && (pfd->rtnevents & (APR_POLLIN | APR_POLLHUP + | APR_POLLERR) + || (tc->other->writable + && ap_filter_input_pending(tc->c) == OK))) { struct proxy_tunnel_conn *in = tc, *out = tc->other; int sent = 0; -- The advantage over "pfd->rtnevents & pfd->reqevents & ..." is that it still enter the read and call the input filters if there is POLLERR/HUP (but not EOF already), for all the filters to be aware of the failure at the network level. Would that work for you? Regards; Yann.