]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon: increase udp timeouts when forwarding
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Wed, 5 Dec 2018 10:51:52 +0000 (11:51 +0100)
committerGrigorii Demidov <grigorii.demidov@nic.cz>
Fri, 7 Dec 2018 10:23:42 +0000 (11:23 +0100)
daemon/worker.c
lib/nsrep.h

index 04e9599d02f13b429fb5479187cd05b8606f1bdf..caf4b1dcd693bdbaa6e96c9c66f987a4e6d44a43 100644 (file)
@@ -987,7 +987,8 @@ static void on_retransmit(uv_timer_t *req)
        struct qr_task *task = session_tasklist_get_first(session);
        if (retransmit(task) == NULL) {
                /* Not possible to spawn request, start timeout timer with remaining deadline. */
-               uint64_t timeout = KR_CONN_RTT_MAX - task->pending_count * KR_CONN_RETRY;
+               uint64_t timeout = task->ctx->req.options.FORWARD ? KR_NS_FWD_TIMEOUT / 2 :
+                                  KR_CONN_RTT_MAX - task->pending_count * KR_CONN_RETRY;
                uv_timer_start(req, on_udp_timeout, timeout, 0);
        } else {
                uv_timer_start(req, on_retransmit, KR_CONN_RETRY, 0);
index 12e9554f34231743cff050b57a327f582ebbf04d..62996f7f7ff7f1f91a2718b3fa0c8db5c12b83ef 100644 (file)
@@ -32,7 +32,8 @@ struct kr_query;
   */
 enum kr_ns_score {
        KR_NS_MAX_SCORE     = 20 * KR_CONN_RTT_MAX, /* max possible value */
-       KR_NS_FWD_TIMEOUT   = 10000, /* timeout for upstream recursor  */
+       KR_NS_FWD_TIMEOUT   = (95 * 10000) / 100, /* timeout for upstream recursor,
+                                                  * 95 percents from max resolution time */
        KR_NS_TIMEOUT       = (95 * KR_CONN_RTT_MAX) / 100, /* timeout for upstream auth */
        KR_NS_LONG          = (3 * KR_NS_TIMEOUT) / 4,
        KR_NS_UNKNOWN       = KR_NS_TIMEOUT / 2,