mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-25 05:49:00 -04:00
A reused TCP/TLS dispatch with no outstanding responses was left in the reuse pool with no read pending, so a peer closing the idle connection went unnoticed: the socket lingered in CLOSE-WAIT and the dead dispatch was later handed to a new query, which failed and the fetch timed out. Keep a read pending on an idle connected dispatch, bounded by an idle timeout, so the close is seen promptly and the connection is dropped from the pool instead of reused. The idle read may only be (re)armed while the dispatch is still connected; arming it on a dispatch that is already shutting down re-reads a dying handle and double-schedules a netmgr job. On shutdown, close the connection as soon as the dispatch reaches its terminal state instead of waiting for the last reference to drop, so an unexpected read (or a peer-side close) cannot leave the socket in CLOSE-WAIT while a reference still lingers. |
||
|---|---|---|
| .. | ||
| bench | ||
| dns | ||
| include/tests | ||
| isc | ||
| isccfg | ||
| libtest | ||
| ns | ||
| .gitignore | ||
| meson.build | ||