From: Azat Khuzhin Date: Tue, 22 Mar 2016 16:29:50 +0000 (+0300) Subject: http: get fd from be layer during connection reset X-Git-Tag: release-2.1.6-beta~52^2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4a53c54bf7ad66dbe879ee3c4f04daf264430fc2;p=libevent http: get fd from be layer during connection reset Since it can be non -1, and we must close it, otherwise we will have problems. And after this patch the following tests report fd 2307 instead of 2309 fd leaks: $ valgrind --leak-check=full --show-reachable=yes --track-fds=yes --error-exitcode=1 regress --no-fork http/cancel.. ==10853== FILE DESCRIPTORS: 2307 open at exit. --- diff --git a/http.c b/http.c index cce68ce6..d95cf1df 100644 --- a/http.c +++ b/http.c @@ -1329,6 +1329,9 @@ evhttp_connection_reset_(struct evhttp_connection *evcon) */ bufferevent_disable_hard_(evcon->bufev, EV_READ|EV_WRITE); + if (evcon->fd == -1) + evcon->fd = bufferevent_getfd(evcon->bufev); + if (evcon->fd != -1) { /* inform interested parties about connection close */ if (evhttp_connected(evcon) && evcon->closecb != NULL)