mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-12 20:59:59 -04:00
Merge branch '4227-free-stub_glue_request-in-stub_glue_response' into 'main'
Free struct stub_glue_request in stub_glue_response() callback Closes #4227 See merge request isc-projects/bind9!8147
This commit is contained in:
commit
7c8d6a454d
2 changed files with 16 additions and 11 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
6214. [bug] Fix the memory leak in for struct stub_glue_request
|
||||
allocated in stub_request_nameserver_address() but not
|
||||
freed in stub_glue_response(). [GL #4227]
|
||||
|
||||
6213. [bug] Mark a primary server as temporarily unreachable if the
|
||||
TCP connection attempt times out. [GL #4215]
|
||||
|
||||
|
|
|
|||
|
|
@ -12880,6 +12880,7 @@ cleanup:
|
|||
}
|
||||
dns_name_free(&sgr->name, zone->mctx);
|
||||
dns_request_destroy(&request);
|
||||
isc_mem_put(zone->mctx, sgr, sizeof(*sgr));
|
||||
|
||||
/* If last request, release all related resources */
|
||||
if (atomic_fetch_sub_release(&stub->pending_requests, 1) == 1) {
|
||||
|
|
@ -12906,19 +12907,19 @@ stub_request_nameserver_address(struct stub_cb_args *args, bool ipv4,
|
|||
dns_message_t *message = NULL;
|
||||
dns_zone_t *zone;
|
||||
isc_result_t result;
|
||||
struct stub_glue_request *request;
|
||||
struct stub_glue_request *sgr;
|
||||
isc_sockaddr_t curraddr;
|
||||
|
||||
zone = args->stub->zone;
|
||||
request = isc_mem_get(zone->mctx, sizeof(*request));
|
||||
request->request = NULL;
|
||||
request->args = args;
|
||||
request->name = (dns_name_t)DNS_NAME_INITEMPTY;
|
||||
request->ipv4 = ipv4;
|
||||
dns_name_dup(name, zone->mctx, &request->name);
|
||||
sgr = isc_mem_get(zone->mctx, sizeof(*sgr));
|
||||
sgr->request = NULL;
|
||||
sgr->args = args;
|
||||
sgr->name = (dns_name_t)DNS_NAME_INITEMPTY;
|
||||
sgr->ipv4 = ipv4;
|
||||
dns_name_dup(name, zone->mctx, &sgr->name);
|
||||
|
||||
create_query(zone, ipv4 ? dns_rdatatype_a : dns_rdatatype_aaaa,
|
||||
&request->name, &message);
|
||||
&sgr->name, &message);
|
||||
|
||||
if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NOEDNS)) {
|
||||
result = add_opt(message, args->udpsize, args->reqnsid, false);
|
||||
|
|
@ -12937,7 +12938,7 @@ stub_request_nameserver_address(struct stub_cb_args *args, bool ipv4,
|
|||
zone->view->requestmgr, message, &zone->sourceaddr, &curraddr,
|
||||
NULL, NULL, DNS_REQUESTOPT_TCP, args->tsig_key,
|
||||
args->timeout * 3, args->timeout, 2, zone->loop,
|
||||
stub_glue_response, request, &request->request);
|
||||
stub_glue_response, sgr, &sgr->request);
|
||||
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
uint_fast32_t pr;
|
||||
|
|
@ -12954,8 +12955,8 @@ stub_request_nameserver_address(struct stub_cb_args *args, bool ipv4,
|
|||
return (ISC_R_SUCCESS);
|
||||
|
||||
fail:
|
||||
dns_name_free(&request->name, zone->mctx);
|
||||
isc_mem_put(zone->mctx, request, sizeof(*request));
|
||||
dns_name_free(&sgr->name, zone->mctx);
|
||||
isc_mem_put(zone->mctx, sgr, sizeof(*sgr));
|
||||
|
||||
if (message != NULL) {
|
||||
dns_message_detach(&message);
|
||||
|
|
|
|||
Loading…
Reference in a new issue