mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-09 01:02:05 -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 |
||
|---|---|---|
| .. | ||
| ns | ||
| .clang-format | ||