bind9/lib/dns
Ondřej Surý febeac215d Keep idle reused outgoing TCP connections under read
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.
2026-06-24 13:52:46 +02:00
..
include Fix memory leak bug during zone shutdown 2026-06-22 20:51:53 +00:00
rdata Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
.gitignore
acl.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
acl_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
adb.c Disable UPDATE and NOTIFY for non-IN classes 2026-05-07 13:32:15 +02:00
badcache.c Fix use-after-free when destroying the bad and unreachable caches 2026-06-04 15:54:21 +02:00
byaddr.c Share reverse (ARPA) domain names 2025-10-01 12:16:05 +02:00
cache.c Remove the dead dns_expire_ttl code path and deletettl stats counter 2026-03-30 21:46:44 +02:00
callbacks.c Convert all categories and modules into static lists 2024-08-20 12:50:39 +00:00
catz.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00
client.c Add switch to disable cookie checking in delv 2026-03-26 11:18:26 +11:00
clientinfo.c
compress.c remove the 'name_coff' parameter in dns_name_towire() 2025-02-25 12:53:25 -08:00
db.c Free the slabheader proofs in its destructor 2026-06-22 13:45:05 +02:00
db_p.h Make dns_glue_t private to qpzone 2026-05-11 10:22:25 +02:00
dbiterator.c Implement dns_dbiterator_seek3 2025-12-10 14:18:52 +01:00
deleg.c Fix delegdb dump buffer overflow 2026-06-12 15:45:22 +02:00
diff.c Remove name boundary optimization 2026-05-29 09:50:11 +02:00
dispatch.c Keep idle reused outgoing TCP connections under read 2026-06-24 13:52:46 +02:00
dlz.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
dlz_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
dns64.c Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
dnssec.c Remove CDs/CDNSKEY records on reconfig 2026-06-19 08:34:54 +00:00
dnstap.c Take 'env' reference before async calling perform_reopen() 2026-03-18 16:10:07 +00:00
ds.c switch isc_md_type_t to a proper enum 2026-02-02 11:12:55 +03:00
dst_api.c Enforce strict RSA DNSKEY shape during DNSSEC validation 2026-06-08 18:00:27 +02:00
dst_internal.h Enforce strict RSA DNSKEY shape during DNSSEC validation 2026-06-08 18:00:27 +02:00
dst_openssl.h move openssl error reporting to isc/ossl_wrap 2026-02-02 11:50:14 +03:00
dst_parse.c Use isc__zero_or_more when calling isc_base64_tobuffer 2026-01-28 00:25:04 +11:00
dst_parse.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
dyndb.c Move zonemgr to own source file 2026-04-08 14:24:17 +02:00
dyndb_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
ecs.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ede.c add dns_message API to add EDNS options 2025-11-21 11:13:18 -08:00
fixedname.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
forward.c Fix formatting after refactor 2025-12-10 11:28:10 +01:00
gen.c Silence "may be truncated" warnings 2025-08-04 15:38:17 +02:00
geoip2.c remove GeoIP2 metro and metrocode 2026-06-18 07:23:31 +02:00
gssapi_link.c Deprecate max-rsa-exponent-size, always use 4096 instead 2025-05-21 00:50:08 +02:00
gssapictx.c Check GSS_C_REPLAY_FLAG in client-side ret_flags validation 2026-05-07 13:32:15 +02:00
hmac_link.c Size HMAC key generation buffers to the maximum block size 2026-04-29 19:21:20 +02:00
ipkeylist.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
iptable.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
journal.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
kasp.c Refactor dns_kasp_attach/detach 2026-01-23 09:59:52 +00:00
key.c Remove remaining RFC 3445 KEY flags 2026-05-05 10:17:31 +02:00
keydata.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
keymgr.c Fix setting retire in dns_keymgr_key_init 2026-03-05 10:14:45 +00:00
keystore.c Fix log level bug in keystore 2026-02-25 11:34:07 +01:00
keytable.c Fix rwlock type mismatch in delete_ds() error path 2026-03-17 16:05:11 +01:00
lib.c Replace lock keyfile hashmap with lock pool 2026-03-06 12:31:24 +01:00
master.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00
masterdump.c Remove the ANCIENT slabheader attribute and statistics counter 2026-06-22 13:45:18 +02:00
meson.build Add DTrace support for resolver queries 2026-06-04 13:55:56 +02:00
message.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00
name.c Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
nametree.c Fix formatting after refactor 2025-12-10 11:28:10 +01:00
ncache.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
notify.c Limit the number of addresses returned per ADB find 2026-05-07 13:32:15 +02:00
nsec.c Drop RFC 2535 special-casing of the KEY record type 2026-05-28 13:21:00 +02:00
nsec3.c Drop RFC 2535 special-casing of the KEY record type 2026-05-28 13:21:00 +02:00
nta.c Hold a reference to the NTA table for the lifetime of each NTA 2026-05-05 22:27:39 +02:00
openssl_link.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
openssl_shim.h Enforce strict RSA DNSKEY shape during DNSSEC validation 2026-06-08 18:00:27 +02:00
opensslecdsa_link.c expose isc__crypto_md in isc/ossl_wrap.h 2026-02-02 11:50:14 +03:00
openssleddsa_link.c Generate Ed25519/Ed448 keys via PKCS#11 when a label is set 2026-05-26 11:18:56 +00:00
opensslrsa_link.c Enforce strict RSA DNSKEY shape during DNSSEC validation 2026-06-08 18:00:27 +02:00
order.c Use ControlStatementsExceptControlMacros for SpaceBeforeParens 2025-08-19 07:58:33 +02:00
peer.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
private.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
probes-dns.d Add DTrace support for resolver queries 2026-06-04 13:55:56 +02:00
qp.c Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
qp_p.h Fix stdc_count_zeros/stdc_count_ones polyfill mismatch 2026-06-02 10:18:13 +02:00
qpcache.c Keep in-flight cache headers safe from LRU eviction during add 2026-06-22 13:45:23 +02:00
qpcache_p.h Remove the heap memory context from QPcache 2026-03-30 21:46:44 +02:00
qpzone.c Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
qpzone_p.h Delay binding glue to rdataset 2026-05-11 10:28:20 +02:00
rcode.c standardize CHECK and RETERR macros 2025-12-03 13:26:28 -08:00
rdata.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
rdatalist.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
rdataset.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
rdatasetiter.c add DNS_DBITERATOR_FOREACH and DNS_RDATASETITER_FOREACH 2025-05-27 21:08:09 -07:00
rdataslab.c Squash dns_slabtop into dns_slabheader 2026-06-22 13:45:13 +02:00
rdataslab_p.h Remove the ANCIENT slabheader attribute and statistics counter 2026-06-22 13:45:18 +02:00
rdatavec.c Delay binding glue to rdataset 2026-05-11 10:28:20 +02:00
rdatavec_p.h Fix formatting 2025-12-10 12:18:34 +01:00
remote.c simplify code around isc_mem_put() and isc_mem_free() 2025-05-28 17:22:32 -07:00
request.c Use sequential per-dispatch message IDs for TCP 2026-04-14 17:48:21 +02:00
resconf.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
resolver.c Fail the fetch when a response fails the TSIG signature check 2026-06-24 12:18:19 +02:00
result.c clean up result codes that are never used 2025-01-23 15:54:57 -08:00
rootns.c Rename view->hints to view->rootdb and rearm priming 2026-04-16 13:39:18 +02:00
rpz.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00
rriterator.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
rrl.c Fix spelling typos in comments and code 2026-06-01 16:58:16 +02:00
sdlz.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
skr.c Importing invalid SKR file might overflow the stack buffer 2026-02-24 19:44:57 +01:00
soa.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
ssu.c Use ControlStatementsExceptControlMacros for SpaceBeforeParens 2025-08-19 07:58:33 +02:00
ssu_external.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stats.c Remove the ANCIENT slabheader attribute and statistics counter 2026-06-22 13:45:18 +02:00
tests
time.c Use clang-format-22 to update formatting 2026-03-04 10:56:41 +01:00
tkey.c Merge tag 'v9.21.22' 2026-05-20 10:26:28 +00:00
transport.c switch to CHECK where it wasn't being used 2025-12-03 13:45:42 -08:00
tsig.c Use SIEVE for TSIG generated-key LRU 2026-06-16 14:40:49 +02:00
tsig_p.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
ttl.c standardize CHECK and RETERR macros 2025-12-03 13:26:28 -08:00
unreachcache.c Fix use-after-free when destroying the bad and unreachable caches 2026-06-04 15:54:21 +02:00
update.c Fix memory leak bug during zone shutdown 2026-06-22 20:51:53 +00:00
validator.c Check wildcard signer and NOQNAME signer match 2026-06-18 10:01:29 -07:00
view.c Disallow configuration of user-defined non-IN class views 2026-06-08 17:50:15 +02:00
xfrin.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00
zone.c Fix memory leak bug during zone shutdown 2026-06-22 20:51:53 +00:00
zone_p.h Fix a bug in "receive secure serial" processing 2026-06-22 20:51:53 +00:00
zonefetch.c Guard parent-NS walk against running off the root 2026-05-01 08:18:36 +02:00
zonemgr.c Move dns_zone_next/dns_zone_first to zonemgr 2026-04-08 14:27:06 +02:00
zoneproperties.c Fix case-sensitivity bug in zone filename token-parsing 2026-04-16 11:37:02 +00:00
zoneverify.c Check wildcard signer and NOQNAME signer match 2026-06-18 10:01:29 -07:00
zt.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00