mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-21 23:49:50 -04:00
For SIG(0)-signed requests, view matching is offloaded and the request is finished asynchronously from ns_client_request_continue(), which passes client->inner.buffer to dns_dt_send(). That buffer aliases the network manager's receive buffer, only valid during the read callback, so it may already be freed and reused, producing garbage dnstap frames (e.g. the "upforwd" sig0-over-DoT test fails with UQ=0). When the request is offloaded (ns_client_setup_view() returns DNS_R_WAIT) and dnstap is enabled, copy the request buffer and point client->inner.buffer at the copy so it survives the asynchronous hop; free it in ns__client_reset_cb(). When dnstap is disabled there is no async consumer of the buffer, so detach it from the receive buffer instead. Assisted-by: Claude:claude-opus-4-8 |
||
|---|---|---|
| .. | ||
| include | ||
| .gitignore | ||
| client.c | ||
| hooks.c | ||
| interfacemgr.c | ||
| listenlist.c | ||
| meson.build | ||
| notify.c | ||
| probes-ns.d | ||
| query.c | ||
| server.c | ||
| stats.c | ||
| tests | ||
| update.c | ||
| xfrout.c | ||