mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-19 09:09:36 -04:00
Skip the no-op code in adjustsrtt()
If factor == DNS_ADB_RTTADJAGE and addr->entry->lastage == now we would load value into new_srtt and then immediatelly store it back which triggers the synchronization between threads using .srtt values.
This commit is contained in:
parent
cb0db600e7
commit
0635bd01cb
1 changed files with 4 additions and 5 deletions
|
|
@ -3057,18 +3057,17 @@ adjustsrtt(dns_adbaddrinfo_t *addr, unsigned int rtt, unsigned int factor,
|
|||
new_srtt -= addr->entry->srtt;
|
||||
new_srtt >>= 9;
|
||||
atomic_store(&addr->entry->lastage, now);
|
||||
} else {
|
||||
new_srtt = atomic_load(&addr->entry->srtt)
|
||||
atomic_store(&addr->entry->srtt, new_srtt);
|
||||
addr->srtt = new_srtt;
|
||||
}
|
||||
} else {
|
||||
new_srtt = ((uint64_t)atomic_load(&addr->entry->srtt) / 10 *
|
||||
factor) +
|
||||
((uint64_t)rtt / 10 * (10 - factor));
|
||||
atomic_store(&addr->entry->srtt, new_srtt);
|
||||
addr->srtt = new_srtt;
|
||||
}
|
||||
|
||||
atomic_store(&addr->entry->srtt, new_srtt);
|
||||
addr->srtt = new_srtt;
|
||||
|
||||
(void)atomic_compare_exchange_strong(&addr->entry->expires,
|
||||
&(isc_stdtime_t){ 0 },
|
||||
now + ADB_ENTRY_WINDOW);
|
||||
|
|
|
|||
Loading…
Reference in a new issue