The dns__nta_shutdown() could be run from different threads and it was
accessing nta->timer unlocked. Don't check and stop the timer from
dns__nta_shutdown() directly, but leave it for the async callback.
REQUIRE(VALID_NTA(nta));
if (nta->timer) {
- isc_timer_stop(nta->timer); /* This is superfluous */
+ isc_timer_stop(nta->timer);
isc_timer_destroy(&nta->timer);
}
dns__nta_shutdown(dns__nta_t *nta) {
REQUIRE(VALID_NTA(nta));
- if (nta->timer != NULL) {
- isc_timer_stop(nta->timer);
- }
-
dns__nta_ref(nta);
isc_async_run(nta->loop, (isc_job_cb)dns__nta_shutdown_cb, nta);
}