From: Ondřej Surý Date: Thu, 14 Jul 2022 11:22:34 +0000 (+0200) Subject: Cleanup the STATID_CONNECT and STATID_CONNECTFAIL stat counters X-Git-Tag: v9.19.4~26^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e10d3b45f31538602dee12ff2a7c36385438c1e;p=thirdparty%2Fbind9.git Cleanup the STATID_CONNECT and STATID_CONNECTFAIL stat counters The STATID_CONNECT and STATID_CONNECTFAIL statistics were used incorrectly. The STATID_CONNECT was incremented twice (once in the *_connect_direct() and once in the callback) and STATID_CONNECTFAIL would not be incremented at all if the failure happened in the callback. Closes: #3452 --- diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 350117d6f7c..f1a0b94186c 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -1919,6 +1919,8 @@ isc__nm_failed_connect_cb(isc_nmsocket_t *sock, isc__nm_uvreq_t *req, REQUIRE(sock->tid == isc_nm_tid()); REQUIRE(req->cb.connect != NULL); + isc__nm_incstats(sock, STATID_CONNECTFAIL); + isc__nmsocket_timer_stop(sock); uv_handle_set_data((uv_handle_t *)&sock->read_timer, sock); diff --git a/lib/isc/netmgr/tcp.c b/lib/isc/netmgr/tcp.c index 3d139b0dc19..6b417963e1e 100644 --- a/lib/isc/netmgr/tcp.c +++ b/lib/isc/netmgr/tcp.c @@ -165,7 +165,6 @@ tcp_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) { isc__nm_incstats(sock, STATID_CONNECTFAIL); goto done; } - isc__nm_incstats(sock, STATID_CONNECT); uv_handle_set_data((uv_handle_t *)&sock->read_timer, &req->uv_req.connect); @@ -219,7 +218,7 @@ isc__nm_async_tcpconnect(isc__networker_t *worker, isc__netievent_t *ev0) { static void tcp_connect_cb(uv_connect_t *uvreq, int status) { - isc_result_t result; + isc_result_t result = ISC_R_UNSET; isc__nm_uvreq_t *req = NULL; isc_nmsocket_t *sock = uv_handle_get_data((uv_handle_t *)uvreq->handle); struct sockaddr_storage ss; @@ -266,7 +265,6 @@ tcp_connect_cb(uv_connect_t *uvreq, int status) { &sock->uv_handle.tcp, &req->peer.type.sa, tcp_connect_cb); if (r != 0) { - isc__nm_incstats(sock, STATID_CONNECTFAIL); result = isc_uverr2result(r); goto error; } diff --git a/lib/isc/netmgr/tcpdns.c b/lib/isc/netmgr/tcpdns.c index 685268eed96..ce281a118f6 100644 --- a/lib/isc/netmgr/tcpdns.c +++ b/lib/isc/netmgr/tcpdns.c @@ -135,7 +135,6 @@ tcpdns_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) { isc__nm_incstats(sock, STATID_CONNECTFAIL); goto done; } - isc__nm_incstats(sock, STATID_CONNECT); uv_handle_set_data((uv_handle_t *)&sock->read_timer, &req->uv_req.connect); @@ -189,7 +188,7 @@ isc__nm_async_tcpdnsconnect(isc__networker_t *worker, isc__netievent_t *ev0) { static void tcpdns_connect_cb(uv_connect_t *uvreq, int status) { - isc_result_t result; + isc_result_t result = ISC_R_UNSET; isc__nm_uvreq_t *req = NULL; isc_nmsocket_t *sock = uv_handle_get_data((uv_handle_t *)uvreq->handle); struct sockaddr_storage ss; @@ -229,7 +228,6 @@ tcpdns_connect_cb(uv_connect_t *uvreq, int status) { &req->uv_req.connect, &sock->uv_handle.tcp, &req->peer.type.sa, tcpdns_connect_cb); if (r != 0) { - isc__nm_incstats(sock, STATID_CONNECTFAIL); result = isc_uverr2result(r); goto error; } diff --git a/lib/isc/netmgr/tlsdns.c b/lib/isc/netmgr/tlsdns.c index 44c546836b5..73f153bb9c0 100644 --- a/lib/isc/netmgr/tlsdns.c +++ b/lib/isc/netmgr/tlsdns.c @@ -173,7 +173,6 @@ tlsdns_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) { isc__nm_incstats(sock, STATID_CONNECTFAIL); goto done; } - isc__nm_incstats(sock, STATID_CONNECT); uv_handle_set_data((uv_handle_t *)&sock->read_timer, &req->uv_req.connect); @@ -229,7 +228,7 @@ isc__nm_async_tlsdnsconnect(isc__networker_t *worker, isc__netievent_t *ev0) { static void tlsdns_connect_cb(uv_connect_t *uvreq, int status) { - isc_result_t result; + isc_result_t result = ISC_R_UNSET; isc__nm_uvreq_t *req = NULL; isc_nmsocket_t *sock = uv_handle_get_data((uv_handle_t *)uvreq->handle); struct sockaddr_storage ss; @@ -269,7 +268,6 @@ tlsdns_connect_cb(uv_connect_t *uvreq, int status) { &req->uv_req.connect, &sock->uv_handle.tcp, &req->peer.type.sa, tlsdns_connect_cb); if (r != 0) { - isc__nm_incstats(sock, STATID_CONNECTFAIL); result = isc_uverr2result(r); goto error; }