static void cert_reschedule_query_after_success(ProxyContext * const proxy_context) { if (proxy_context->cert_updater.has_cert_timer != 0) { return; } cert_reschedule_query(proxy_context, (int64_t) CERT_QUERY_RETRY_DELAY_AFTER_SUCCESS); }
static void cert_reschedule_query_after_success(ProxyContext * const proxy_context) { if (evtimer_pending(proxy_context->cert_updater.cert_timer, NULL)) { return; } cert_reschedule_query(proxy_context, (time_t) CERT_QUERY_RETRY_DELAY_AFTER_SUCCESS_MIN_DELAY + (time_t) randombytes_uniform (CERT_QUERY_RETRY_DELAY_AFTER_SUCCESS_JITTER)); }
static void cert_reschedule_query_after_failure(ProxyContext * const proxy_context) { CertUpdater *cert_updater = &proxy_context->cert_updater; int64_t query_retry_delay; if (cert_updater->has_cert_timer != 0) { return; } query_retry_delay = (int64_t) (CERT_QUERY_RETRY_MIN_DELAY + (int64_t) cert_updater->query_retry_step * (CERT_QUERY_RETRY_MAX_DELAY - CERT_QUERY_RETRY_MIN_DELAY) / CERT_QUERY_RETRY_STEPS); if (cert_updater->query_retry_step < CERT_QUERY_RETRY_STEPS) { cert_updater->query_retry_step++; } cert_reschedule_query(proxy_context, query_retry_delay); DNSCRYPT_PROXY_CERTS_UPDATE_RETRY(); }
static void cert_reschedule_query(ProxyContext * const proxy_context, const time_t query_retry_delay) { CertUpdater *cert_updater = &proxy_context->cert_updater; if (evtimer_pending(cert_updater->cert_timer, NULL)) { return; } const struct timeval tv = { .tv_sec = query_retry_delay, .tv_usec = 0 }; evtimer_add(cert_updater->cert_timer, &tv); } static void cert_reschedule_query_after_failure(ProxyContext * const proxy_context) { CertUpdater *cert_updater = &proxy_context->cert_updater; time_t query_retry_delay; if (evtimer_pending(cert_updater->cert_timer, NULL)) { return; } query_retry_delay = (time_t) (CERT_QUERY_RETRY_MIN_DELAY + (time_t) cert_updater->query_retry_step * (CERT_QUERY_RETRY_MAX_DELAY - CERT_QUERY_RETRY_MIN_DELAY) / CERT_QUERY_RETRY_STEPS); if (cert_updater->query_retry_step < CERT_QUERY_RETRY_STEPS) { cert_updater->query_retry_step++; } cert_reschedule_query(proxy_context, query_retry_delay); DNSCRYPT_PROXY_CERTS_UPDATE_RETRY(); if (proxy_context->test_only != 0 && cert_updater->query_retry_step > CERT_QUERY_TEST_RETRY_STEPS) { exit(DNSCRYPT_EXIT_CERT_TIMEOUT); } }