bind9/lib/dns
Ondřej Surý 5beae5faf9
Fix the glue table in the QP and RBT zone databases
When adding glue to the header, we add header to the wait-free stack to
be cleaned up later which sets wfc_node->next to non-NULL value.  When
the actual cleaning happens we would only cleanup the .glue_list, but
since the database isn't locked for the time being, the headers could be
reused while cleaning the existing glue entries, which creates a data
race between database versions.

Revert the code back to use per-database-version hashtable where keys
are the node pointers.  This allows each database version to have
independent glue cache table that doesn't affect nodes or headers that
could already "belong" to the future database version.
2024-08-05 15:36:54 +02:00
..
include Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
rdata Only check SVBC alias forms at higher levels 2024-05-07 11:20:49 +10:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
acl.c Convert rwlock in dns_acl to RCU 2023-10-13 14:44:40 +02:00
adb.c Do not update find.result_v4 and find.result_v6 2024-07-31 14:46:45 +10:00
badcache.c Refactor dns_badcache to use cds_lfht lock-free hashtable 2023-07-31 15:51:15 +02:00
byaddr.c remove isc_task completely 2023-02-16 18:35:32 +01:00
cache.c Add a limit to the number of RR types for single name 2024-06-10 16:55:09 +02:00
callbacks.c add setup/commit functions to rdatacallbacks 2024-03-08 15:36:56 -08:00
catz.c catzs->view should maintain a view reference 2024-05-09 08:17:44 +10:00
client.c use a thread-local variable to get the current running loop 2024-04-02 10:35:56 +02:00
clientinfo.c refactor dns_clientinfo_init(); use separate function to set ECS 2023-02-07 23:48:22 -08:00
compress.c Cleanup the dns_name macros 2023-09-12 16:14:10 +02:00
db.c Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
db_p.h Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
dbiterator.c Implement dns_db node tracing 2023-02-28 11:44:15 +01:00
diff.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
dispatch.c Always call the TCP dispatch connected callbacks asynchronously 2024-03-04 16:34:14 +01:00
dlz.c Refactor dns_zone_create() to return void 2023-07-27 11:37:44 +02:00
dns64.c Add the ability to use DNS64 internally 2023-09-13 14:31:43 +10:00
dnsrps.c improve node reference counting 2024-03-08 15:36:56 -08:00
dnssec.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
dnstap.c Emit and read correct DoT and DoH dnstap entries 2024-04-26 16:12:29 +03:00
dnstap.proto Update the dnstap protobuf definition 2024-04-26 16:08:46 +03:00
ds.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
dst_api.c Remove no longer needed OpenSSL shims and checks 2024-08-05 10:23:59 +00:00
dst_internal.h Remove no longer needed OpenSSL shims and checks 2024-08-05 10:23:59 +00:00
dst_openssl.h Report file and line when converting OpenSSL errors 2023-04-03 12:06:04 +10:00
dst_parse.c Fix clang formatting 2023-08-09 23:48:17 +00:00
dst_parse.h Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
dyndb.c switch to using isc_loopmgr_pause() instead of task exclusive 2023-02-16 17:51:55 +01:00
ecs.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
fixedname.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
forward.c reduce memory consumption of the remaining QP databases 2024-03-14 10:25:07 -07:00
gen.c Use EXIT_SUCCESS and EXIT_FAILURE 2024-02-08 08:01:58 +01:00
geoip2.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
gssapi_link.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
gssapictx.c remove dns_name_totext2() and dns_name_toprincipal() 2023-08-31 12:53:32 -07:00
hmac_link.c Emit deprecated warning for K* file pairs 2023-06-29 08:28:48 +10:00
ipkeylist.c Remove ISC_MEM_ZERO and isc_mem_*x() API 2023-08-31 22:08:35 +02:00
iptable.c Convert manual dns_iptable_{attach,detach} to ISC_REFCOUNT_IMPL 2023-10-13 14:44:40 +02:00
journal.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
kasp.c Move kasp key match function to kasp header 2024-04-19 10:41:04 +02:00
key.c Use dst_key's directory when writing key files 2024-01-25 14:47:43 +01:00
keydata.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
keymgr.c Log key calculation overflows 2024-07-30 10:58:54 +02:00
keystore.c Replace keystore attach/detach with ISC_REFCOUNT_IMPL/ISC_REFCOUNT_DECL 2024-01-25 15:37:40 +01:00
keytable.c reduce memory consumption of the remaining QP databases 2024-03-14 10:25:07 -07:00
log.c remove {root-}delegation-only 2023-03-23 12:57:01 -07:00
Makefile.am rename qpdb to qpcache 2024-03-08 15:36:56 -08:00
master.c Remove infinite loop on ISC_R_NOFILE 2024-05-07 10:01:12 +10:00
masterdump.c Fix yaml output 2024-08-01 12:30:57 +10:00
message.c Remove unnecessary operations 2024-08-02 03:44:04 +00:00
name.c include the nodenames when calculating memory to purge 2024-04-30 12:50:01 -07:00
nametree.c get foundname from the node 2024-04-30 12:50:01 -07:00
ncache.c Use atomic operations to access the trust byte in ncache data 2024-04-17 17:14:34 +02:00
nsec.c Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
nsec3.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
nta.c complete removal of isc_loop_current() 2024-04-02 10:35:56 +02:00
openssl_link.c Use EXIT_SUCCESS and EXIT_FAILURE 2024-02-08 08:01:58 +01:00
openssl_shim.c Remove no longer needed OpenSSL shims and checks 2024-08-05 10:23:59 +00:00
openssl_shim.h Remove no longer needed OpenSSL shims and checks 2024-08-05 10:23:59 +00:00
opensslecdsa_link.c Specify key usage to be digital signature 2024-01-25 14:48:07 +01:00
openssleddsa_link.c Remove no longer needed OpenSSL shims and checks 2024-08-05 10:23:59 +00:00
opensslrsa_link.c fix the rsa exponent to 65537 2024-08-05 11:21:59 +00:00
order.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
peer.c remove nonfunctional DSCP implementation 2023-01-09 12:15:21 -08:00
private.c Update the source code formatting using clang-format-17 2023-10-17 17:47:46 +02:00
probes.d Do not destroy IXFR journal in xfrin_end() 2023-12-20 17:21:14 +01:00
qp.c Rewrite qp fix_iterator() 2024-05-16 09:49:41 +00:00
qp_p.h rename QP-related types to use standard BIND nomenclature 2023-09-28 00:32:39 -07:00
qpcache.c remove the crc64 implementation 2024-08-05 11:21:25 +00:00
qpcache_p.h rename qpdb to qpcache 2024-03-08 15:36:56 -08:00
qpzone.c Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
qpzone_p.h stub dns_qpmulti-based zone database implementation 2024-03-06 20:57:31 -08:00
rbt-cachedb.c remove the crc64 implementation 2024-08-05 11:21:25 +00:00
rbt-zonedb.c Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
rbt.c remove the crc64 implementation 2024-08-05 11:21:25 +00:00
rbtdb.c Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
rbtdb_p.h Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
rcode.c Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
rdata.c Properly reject zero length ALPN in commatxt_fromtext 2024-08-01 10:20:55 +10:00
rdatalist.c Give the rdataset->privateN fields more helpful names 2023-07-17 14:50:25 +02:00
rdataset.c Apply the isc_mem_cget semantic patch 2023-08-31 22:08:35 +02:00
rdatasetiter.c Implement dns_db node tracing 2023-02-28 11:44:15 +01:00
rdataslab.c Fix the glue table in the QP and RBT zone databases 2024-08-05 15:36:54 +02:00
remote.c Apply the isc_mem_cget semantic patch 2023-08-31 22:08:35 +02:00
request.c Restore dns_requestmgr_shutdown re-entrancy 2024-02-07 09:52:32 +11:00
resconf.c Address CID 486326: Memory - corruptions (OVERRUN) 2024-02-13 09:21:49 +11:00
resolver.c minor findnode optimization 2024-08-05 13:36:41 +00:00
result.c Refactor how we map isc_result_t <-> dns_rcode_t 2023-06-15 15:32:04 +02:00
rootns.c add a compile-time option to select default zone and cache DB 2024-03-06 10:49:02 +01:00
rpz.c use a thread-local variable to get the current running loop 2024-04-02 10:35:56 +02:00
rriterator.c Apply the SET_IF_NOT_NULL() semantic patch 2023-08-15 12:21:41 +02:00
rrl.c Update sources to Clang 18 formatting 2024-04-23 13:11:52 +02:00
sdlz.c dns_name_dupwithoffsets() cannot fail 2024-04-10 22:51:07 -04:00
soa.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
ssu.c Add missing period to generated IPv4 6to4 name 2024-08-01 15:17:30 +10:00
ssu_external.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
stats.c Ineffective DbC protections 2023-11-21 14:48:43 +11:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
time.c Remove isc_stdtime_get() macro 2023-03-31 13:33:16 +02:00
tkey.c Return REFUSED if GSSAPI is not configured 2023-07-28 14:37:32 +10:00
transport.c Integrate TLS cipher suites support into BIND 2024-01-12 13:27:59 +02:00
tsig.c Address races in dns_tsigkey_find() 2024-01-05 11:16:12 +01:00
tsig_p.h remove dns__tsig_algallocated() 2023-06-14 08:14:38 +00:00
ttl.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
update.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
validator.c Break out of the switch if we have already reached the quota 2024-04-22 12:32:36 +10:00
view.c Add a limit to the number of RR types for single name 2024-06-10 16:55:09 +02:00
xfrin.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
zone.c dns_difftuple_create() cannot fail 2024-08-05 13:31:38 +00:00
zone_p.h Refactor findzonekeys 2024-01-25 14:48:07 +01:00
zonekey.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
zoneverify.c Properly build the NSEC/NSEC3 type bit map 2024-05-16 10:27:49 +10:00
zt.c use dns_qp_getname() where possible 2024-04-30 12:50:01 -07:00