diff options
author | George Kadianakis <desnacked@riseup.net> | 2021-03-09 15:39:03 +0200 |
---|---|---|
committer | George Kadianakis <desnacked@riseup.net> | 2021-03-17 18:22:38 +0200 |
commit | f493a12e897b02f2e347078dc3e2a2437c324b66 (patch) | |
tree | e3e9ca242526b71090ad255d1dcd182b875e8f2d /src/feature/relay/dns.c | |
parent | 0a5ecb334298187a64f58382231245111130aa76 (diff) | |
download | tor-f493a12e897b02f2e347078dc3e2a2437c324b66.tar.gz tor-f493a12e897b02f2e347078dc3e2a2437c324b66.zip |
Implement straightforward overload general metrics.
- OOM metric
- onionskin overload metric
- DNS timeout metric
Diffstat (limited to 'src/feature/relay/dns.c')
-rw-r--r-- | src/feature/relay/dns.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/feature/relay/dns.c b/src/feature/relay/dns.c index 3d9e50524f..03da9cd3ed 100644 --- a/src/feature/relay/dns.c +++ b/src/feature/relay/dns.c @@ -63,6 +63,7 @@ #include "feature/relay/dns.h" #include "feature/relay/router.h" #include "feature/relay/routermode.h" +#include "feature/stats/rephist.h" #include "lib/crypt_ops/crypto_rand.h" #include "lib/evloop/compat_libevent.h" #include "lib/sandbox/sandbox.h" @@ -1547,6 +1548,16 @@ evdns_callback(int result, char type, int count, int ttl, void *addresses, tor_addr_make_unspec(&addr); + /* Note down any DNS errors to the statistics module */ + if (result == DNS_ERR_TIMEOUT) { + /* libevent timed out while resolving a name. However, because libevent + * handles retries and timeouts internally, this means that all attempts of + * libevent timed out. If we wanted to get more granular information about + * individual libevent attempts, we would have to implement our own DNS + * timeout/retry logic */ + rep_hist_note_overload(OVERLOAD_GENERAL); + } + /* Keep track of whether IPv6 is working */ if (type == DNS_IPv6_AAAA) { if (result == DNS_ERR_TIMEOUT) { |