]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
dig: use new netmgr timeout mechanism
authorEvan Hunt <each@isc.org>
Tue, 3 Nov 2020 05:38:56 +0000 (21:38 -0800)
committerOndřej Surý <ondrej@sury.org>
Wed, 9 Dec 2020 09:46:16 +0000 (10:46 +0100)
use isc_nmhandle_settimeout() to set read/recv timeouts, and get rid
of connect_timeout() and related functions in dighost.c.

(cherry picked from commit ea2b04c361c29cdad80c92877184b063f23002d0)

lib/isc/netmgr/udp.c

index 7cc78f0e3dbd66ec91d6880d57a090f96711f3e2..27e11fc1656611dd75314a4f5d17dd3384cc9097 100644 (file)
@@ -366,6 +366,7 @@ udp_recv_cb(uv_udp_t *handle, ssize_t nrecv, const uv_buf_t *buf,
        if (addr == NULL) {
                goto done;
        }
+
        /*
         * - If we're simulating a firewall blocking UDP packets
         *   bigger than 'maxudp' bytes for testing purposes.
@@ -374,6 +375,7 @@ udp_recv_cb(uv_udp_t *handle, ssize_t nrecv, const uv_buf_t *buf,
        if ((maxudp != 0 && (uint32_t)nrecv > maxudp)) {
                goto done;
        }
+
        /*
         * - If the socket is no longer active.
         */
@@ -387,6 +389,11 @@ udp_recv_cb(uv_udp_t *handle, ssize_t nrecv, const uv_buf_t *buf,
        cb = sock->recv_cb;
        cbarg = sock->recv_cbarg;
 
+       if (sock->timer_running) {
+               uv_timer_stop(&sock->timer);
+               sock->timer_running = false;
+       }
+
        if (atomic_load(&sock->client)) {
                if (nrecv < 0) {
                        failed_read_cb(sock, isc__nm_uverr2result(nrecv));
@@ -846,10 +853,6 @@ udp_read_cb(uv_udp_t *handle, ssize_t nrecv, const uv_buf_t *buf,
            const struct sockaddr *addr, unsigned flags) {
        isc_nmsocket_t *sock = uv_handle_get_data((uv_handle_t *)handle);
 
-       if (sock->timer_running) {
-               uv_timer_stop(&sock->timer);
-               sock->timer_running = false;
-       }
        udp_recv_cb(handle, nrecv, buf, addr, flags);
        uv_udp_recv_stop(&sock->uv_handle.udp);
 }