mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-23 10:37:43 -04:00
Because the asynchronous loading logic expected all jobs to be scheduled then to be run (because it used to be scheduled during the exclusive mode) and because all jobs are scheduled on various threads, there were random situations where load_zones() would return after the scheduled DB zone loading actually ran. In such cases, the zl->refs ref counter in view_loaded() wouldn't go down to 0 and the remaining task to do once all zones were loaded was never called. In particular, server->reload_status kept the NAMED_RELOAD_PENDING state. This problem is fixed by handling zoneload_t as a ref-counted object, shared between load_zones() and each instance of scheduled zone DB loading. Its destructor function is actually the content of view_loaded() in the case the zt->refs went to 0. This ensures a correct post-loading routine to be called once the last load is done. |
||
|---|---|---|
| .. | ||
| check | ||
| confgen | ||
| delv | ||
| dig | ||
| dnssec | ||
| include | ||
| named | ||
| nsupdate | ||
| plugins | ||
| rndc | ||
| tests | ||
| tools | ||
| meson.build | ||