mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-23 02:28:55 +00:00
Refactored dns_message_t for using attach/detach semantics
This commit will be used as a base for the next code updates in order to have a better control of dns_message_t objects' lifetime.
This commit is contained in:
parent
e6f2f79ff2
commit
12d6d13100
@ -1681,7 +1681,7 @@ destroy_lookup(dig_lookup_t *lookup) {
|
|||||||
isc_mem_free(mctx, ptr);
|
isc_mem_free(mctx, ptr);
|
||||||
}
|
}
|
||||||
if (lookup->sendmsg != NULL) {
|
if (lookup->sendmsg != NULL) {
|
||||||
dns_message_destroy(&lookup->sendmsg);
|
dns_message_detach(&lookup->sendmsg);
|
||||||
}
|
}
|
||||||
if (lookup->querysig != NULL) {
|
if (lookup->querysig != NULL) {
|
||||||
debug("freeing buffer %p", lookup->querysig);
|
debug("freeing buffer %p", lookup->querysig);
|
||||||
@ -3817,7 +3817,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
hex_dump(&b);
|
hex_dump(&b);
|
||||||
}
|
}
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
@ -3839,7 +3839,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
dighost_warning("Warning: Opcode mismatch: expected %s, got %s",
|
dighost_warning("Warning: Opcode mismatch: expected %s, got %s",
|
||||||
expect, got);
|
expect, got);
|
||||||
|
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
if (l->tcp_mode) {
|
if (l->tcp_mode) {
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
@ -3891,7 +3891,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!match) {
|
if (!match) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
if (l->tcp_mode) {
|
if (l->tcp_mode) {
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
@ -3917,7 +3917,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (l->trace && l->trace_root) {
|
if (l->trace && l->trace_root) {
|
||||||
n->rdtype = l->qrdtype;
|
n->rdtype = l->qrdtype;
|
||||||
}
|
}
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
@ -3936,7 +3936,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (l->trace && l->trace_root) {
|
if (l->trace && l->trace_root) {
|
||||||
n->rdtype = l->qrdtype;
|
n->rdtype = l->qrdtype;
|
||||||
}
|
}
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
@ -3960,7 +3960,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (l->trace && l->trace_root) {
|
if (l->trace && l->trace_root) {
|
||||||
n->rdtype = l->qrdtype;
|
n->rdtype = l->qrdtype;
|
||||||
}
|
}
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
@ -4001,7 +4001,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
query->servname);
|
query->servname);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
return;
|
return;
|
||||||
@ -4134,7 +4134,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
if (l->doing_xfr) {
|
if (l->doing_xfr) {
|
||||||
if (query != l->xfr_q) {
|
if (query != l->xfr_q) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
@ -4144,7 +4144,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
docancel = check_for_more_data(query, msg, sevent);
|
docancel = check_for_more_data(query, msg, sevent);
|
||||||
}
|
}
|
||||||
if (docancel) {
|
if (docancel) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
@ -4160,14 +4160,14 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
if (!query->lookup->ns_search_only ||
|
if (!query->lookup->ns_search_only ||
|
||||||
query->lookup->trace_root || docancel) {
|
query->lookup->trace_root || docancel) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
}
|
}
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
}
|
}
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
|
@ -935,7 +935,7 @@ flush_lookup_list(void) {
|
|||||||
isc_mem_free(mctx, sp);
|
isc_mem_free(mctx, sp);
|
||||||
}
|
}
|
||||||
if (l->sendmsg != NULL) {
|
if (l->sendmsg != NULL) {
|
||||||
dns_message_destroy(&l->sendmsg);
|
dns_message_detach(&l->sendmsg);
|
||||||
}
|
}
|
||||||
lp = l;
|
lp = l;
|
||||||
l = ISC_LIST_NEXT(l, link);
|
l = ISC_LIST_NEXT(l, link);
|
||||||
|
@ -720,7 +720,7 @@ doshutdown(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (updatemsg != NULL) {
|
if (updatemsg != NULL) {
|
||||||
dns_message_destroy(&updatemsg);
|
dns_message_detach(&updatemsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_dst_up) {
|
if (is_dst_up) {
|
||||||
@ -2580,7 +2580,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
if (shuttingdown) {
|
if (shuttingdown) {
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
dns_message_destroy(&soaquery);
|
dns_message_detach(&soaquery);
|
||||||
isc_mem_put(gmctx, reqinfo, sizeof(nsu_requestinfo_t));
|
isc_mem_put(gmctx, reqinfo, sizeof(nsu_requestinfo_t));
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
maybeshutdown();
|
maybeshutdown();
|
||||||
@ -2611,7 +2611,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
|
|||||||
result = dns_request_getresponse(request, rcvmsg,
|
result = dns_request_getresponse(request, rcvmsg,
|
||||||
DNS_MESSAGEPARSE_PRESERVEORDER);
|
DNS_MESSAGEPARSE_PRESERVEORDER);
|
||||||
if (result == DNS_R_TSIGERRORSET && servers != NULL) {
|
if (result == DNS_R_TSIGERRORSET && servers != NULL) {
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
ddebug("Destroying request [%p]", request);
|
ddebug("Destroying request [%p]", request);
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
reqinfo = isc_mem_get(gmctx, sizeof(nsu_requestinfo_t));
|
reqinfo = isc_mem_get(gmctx, sizeof(nsu_requestinfo_t));
|
||||||
@ -2650,9 +2650,9 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
|
|||||||
char namebuf[DNS_NAME_FORMATSIZE];
|
char namebuf[DNS_NAME_FORMATSIZE];
|
||||||
dns_name_format(userzone, namebuf, sizeof(namebuf));
|
dns_name_format(userzone, namebuf, sizeof(namebuf));
|
||||||
error("specified zone '%s' does not exist (NXDOMAIN)", namebuf);
|
error("specified zone '%s' does not exist (NXDOMAIN)", namebuf);
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
dns_message_destroy(&soaquery);
|
dns_message_detach(&soaquery);
|
||||||
ddebug("Out of recvsoa");
|
ddebug("Out of recvsoa");
|
||||||
done_update();
|
done_update();
|
||||||
seenerror = true;
|
seenerror = true;
|
||||||
@ -2786,11 +2786,11 @@ lookforsoa:
|
|||||||
setzoneclass(dns_rdataclass_none);
|
setzoneclass(dns_rdataclass_none);
|
||||||
#endif /* HAVE_GSSAPI */
|
#endif /* HAVE_GSSAPI */
|
||||||
|
|
||||||
dns_message_destroy(&soaquery);
|
dns_message_detach(&soaquery);
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
ddebug("Out of recvsoa");
|
ddebug("Out of recvsoa");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -3003,7 +3003,7 @@ start_gssrequest(dns_name_t *master) {
|
|||||||
|
|
||||||
failure:
|
failure:
|
||||||
if (rmsg != NULL) {
|
if (rmsg != NULL) {
|
||||||
dns_message_destroy(&rmsg);
|
dns_message_detach(&rmsg);
|
||||||
}
|
}
|
||||||
if (err_message != NULL) {
|
if (err_message != NULL) {
|
||||||
isc_mem_free(gmctx, err_message);
|
isc_mem_free(gmctx, err_message);
|
||||||
@ -3078,7 +3078,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
if (shuttingdown) {
|
if (shuttingdown) {
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
dns_message_destroy(&tsigquery);
|
dns_message_detach(&tsigquery);
|
||||||
isc_mem_put(gmctx, reqinfo, sizeof(nsu_gssinfo_t));
|
isc_mem_put(gmctx, reqinfo, sizeof(nsu_gssinfo_t));
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
maybeshutdown();
|
maybeshutdown();
|
||||||
@ -3089,7 +3089,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
|
|||||||
ddebug("Destroying request [%p]", request);
|
ddebug("Destroying request [%p]", request);
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
if (!next_master("recvgss", addr, eresult)) {
|
if (!next_master("recvgss", addr, eresult)) {
|
||||||
dns_message_destroy(&tsigquery);
|
dns_message_detach(&tsigquery);
|
||||||
failed_gssrequest();
|
failed_gssrequest();
|
||||||
} else {
|
} else {
|
||||||
dns_message_renderreset(tsigquery);
|
dns_message_renderreset(tsigquery);
|
||||||
@ -3149,7 +3149,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
|
|||||||
&err_message);
|
&err_message);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case DNS_R_CONTINUE:
|
case DNS_R_CONTINUE:
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
send_gssrequest(kserver, tsigquery, &request, context);
|
send_gssrequest(kserver, tsigquery, &request, context);
|
||||||
ddebug("Out of recvgss");
|
ddebug("Out of recvgss");
|
||||||
@ -3196,9 +3196,9 @@ recvgss(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
done:
|
done:
|
||||||
dns_request_destroy(&request);
|
dns_request_destroy(&request);
|
||||||
dns_message_destroy(&tsigquery);
|
dns_message_detach(&tsigquery);
|
||||||
|
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
ddebug("Out of recvgss");
|
ddebug("Out of recvgss");
|
||||||
}
|
}
|
||||||
#endif /* HAVE_GSSAPI */
|
#endif /* HAVE_GSSAPI */
|
||||||
@ -3217,7 +3217,7 @@ start_update(void) {
|
|||||||
|
|
||||||
LOCK(&answer_lock);
|
LOCK(&answer_lock);
|
||||||
if (answer != NULL) {
|
if (answer != NULL) {
|
||||||
dns_message_destroy(&answer);
|
dns_message_detach(&answer);
|
||||||
}
|
}
|
||||||
UNLOCK(&answer_lock);
|
UNLOCK(&answer_lock);
|
||||||
|
|
||||||
@ -3262,7 +3262,7 @@ start_update(void) {
|
|||||||
dns_message_puttempname(soaquery, &name);
|
dns_message_puttempname(soaquery, &name);
|
||||||
dns_rdataset_disassociate(rdataset);
|
dns_rdataset_disassociate(rdataset);
|
||||||
dns_message_puttemprdataset(soaquery, &rdataset);
|
dns_message_puttemprdataset(soaquery, &rdataset);
|
||||||
dns_message_destroy(&soaquery);
|
dns_message_detach(&soaquery);
|
||||||
done_update();
|
done_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -3300,7 +3300,7 @@ cleanup(void) {
|
|||||||
|
|
||||||
LOCK(&answer_lock);
|
LOCK(&answer_lock);
|
||||||
if (answer != NULL) {
|
if (answer != NULL) {
|
||||||
dns_message_destroy(&answer);
|
dns_message_detach(&answer);
|
||||||
}
|
}
|
||||||
UNLOCK(&answer_lock);
|
UNLOCK(&answer_lock);
|
||||||
|
|
||||||
|
@ -114,8 +114,8 @@ recvresponse(isc_task_t *task, isc_event_t *event) {
|
|||||||
(char *)isc_buffer_base(&outbuf));
|
(char *)isc_buffer_base(&outbuf));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
dns_message_destroy(&query);
|
dns_message_detach(&query);
|
||||||
dns_message_destroy(&response);
|
dns_message_detach(&response);
|
||||||
dns_request_destroy(&reqev->request);
|
dns_request_destroy(&reqev->request);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
|
|
||||||
|
@ -118,8 +118,8 @@ recvquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
result = dst_key_tofile(tsigkey->key, type, "");
|
result = dst_key_tofile(tsigkey->key, type, "");
|
||||||
CHECK("dst_key_tofile", result);
|
CHECK("dst_key_tofile", result);
|
||||||
|
|
||||||
dns_message_destroy(&query);
|
dns_message_detach(&query);
|
||||||
dns_message_destroy(&response);
|
dns_message_detach(&response);
|
||||||
dns_request_destroy(&reqev->request);
|
dns_request_destroy(&reqev->request);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
|
@ -96,8 +96,8 @@ recvquery(isc_task_t *task, isc_event_t *event) {
|
|||||||
result = dns_tkey_processdeleteresponse(query, response, ring);
|
result = dns_tkey_processdeleteresponse(query, response, ring);
|
||||||
CHECK("dns_tkey_processdhresponse", result);
|
CHECK("dns_tkey_processdhresponse", result);
|
||||||
|
|
||||||
dns_message_destroy(&query);
|
dns_message_detach(&query);
|
||||||
dns_message_destroy(&response);
|
dns_message_detach(&response);
|
||||||
dns_request_destroy(&reqev->request);
|
dns_request_destroy(&reqev->request);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
|
@ -341,7 +341,7 @@ process_message(isc_buffer_t *source) {
|
|||||||
dns_compress_invalidate(&cctx);
|
dns_compress_invalidate(&cctx);
|
||||||
|
|
||||||
message->from_to_wire = DNS_MESSAGE_INTENTPARSE;
|
message->from_to_wire = DNS_MESSAGE_INTENTPARSE;
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
|
|
||||||
printf("Message rendered.\n");
|
printf("Message rendered.\n");
|
||||||
if (printmemstats) {
|
if (printmemstats) {
|
||||||
@ -358,5 +358,5 @@ process_message(isc_buffer_t *source) {
|
|||||||
result = printmessage(message);
|
result = printmessage(message);
|
||||||
CHECKRESULT(result, "printmessage() failed");
|
CHECKRESULT(result, "printmessage() failed");
|
||||||
}
|
}
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
|
@ -417,7 +417,7 @@ cleanup:
|
|||||||
dns_dt_close(&handle);
|
dns_dt_close(&handle);
|
||||||
}
|
}
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
if (b != NULL) {
|
if (b != NULL) {
|
||||||
isc_buffer_free(&b);
|
isc_buffer_free(&b);
|
||||||
|
@ -534,10 +534,10 @@ cleanup:
|
|||||||
dns_master_styledestroy(&style, mctx);
|
dns_master_styledestroy(&style, mctx);
|
||||||
}
|
}
|
||||||
if (query != NULL) {
|
if (query != NULL) {
|
||||||
dns_message_destroy(&query);
|
dns_message_detach(&query);
|
||||||
}
|
}
|
||||||
if (response != NULL) {
|
if (response != NULL) {
|
||||||
dns_message_destroy(&response);
|
dns_message_detach(&response);
|
||||||
}
|
}
|
||||||
dns_request_destroy(&reqev->request);
|
dns_request_destroy(&reqev->request);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
|
@ -60,7 +60,7 @@ parse_message(isc_buffer_t *input, dns_message_t **messagep) {
|
|||||||
if (result == ISC_R_SUCCESS && messagep != NULL) {
|
if (result == ISC_R_SUCCESS && messagep != NULL) {
|
||||||
*messagep = message;
|
*messagep = message;
|
||||||
} else {
|
} else {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
@ -128,7 +128,7 @@ render_message(dns_message_t **messagep) {
|
|||||||
|
|
||||||
message->from_to_wire = DNS_MESSAGE_INTENTPARSE;
|
message->from_to_wire = DNS_MESSAGE_INTENTPARSE;
|
||||||
|
|
||||||
dns_message_destroy(messagep);
|
dns_message_detach(messagep);
|
||||||
|
|
||||||
result = parse_message(&buffer, messagep);
|
result = parse_message(&buffer, messagep);
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -1893,7 +1893,7 @@ static void
|
|||||||
update_sendevent(updatectx_t *uctx, isc_result_t result) {
|
update_sendevent(updatectx_t *uctx, isc_result_t result) {
|
||||||
isc_task_t *task;
|
isc_task_t *task;
|
||||||
|
|
||||||
dns_message_destroy(&uctx->updatemsg);
|
dns_message_detach(&uctx->updatemsg);
|
||||||
if (uctx->tsigkey != NULL) {
|
if (uctx->tsigkey != NULL) {
|
||||||
dns_tsigkey_detach(&uctx->tsigkey);
|
dns_tsigkey_detach(&uctx->tsigkey);
|
||||||
}
|
}
|
||||||
@ -1950,7 +1950,7 @@ update_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
if (answer != NULL) {
|
if (answer != NULL) {
|
||||||
dns_message_destroy(&answer);
|
dns_message_detach(&answer);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
|
|
||||||
@ -2282,7 +2282,7 @@ receive_soa(isc_task_t *task, isc_event_t *event) {
|
|||||||
dns_request_t *newrequest = NULL;
|
dns_request_t *newrequest = NULL;
|
||||||
|
|
||||||
/* Retry SOA request without TSIG */
|
/* Retry SOA request without TSIG */
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
dns_message_renderreset(uctx->soaquery);
|
dns_message_renderreset(uctx->soaquery);
|
||||||
reqoptions = 0;
|
reqoptions = 0;
|
||||||
if (uctx->want_tcp) {
|
if (uctx->want_tcp) {
|
||||||
@ -2397,14 +2397,14 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!droplabel || result != ISC_R_SUCCESS) {
|
if (!droplabel || result != ISC_R_SUCCESS) {
|
||||||
dns_message_destroy(&uctx->soaquery);
|
dns_message_detach(&uctx->soaquery);
|
||||||
LOCK(&uctx->lock);
|
LOCK(&uctx->lock);
|
||||||
dns_request_destroy(&uctx->soareq);
|
dns_request_destroy(&uctx->soareq);
|
||||||
UNLOCK(&uctx->lock);
|
UNLOCK(&uctx->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rcvmsg != NULL) {
|
if (rcvmsg != NULL) {
|
||||||
dns_message_destroy(&rcvmsg);
|
dns_message_detach(&rcvmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
@ -2466,7 +2466,7 @@ fail:
|
|||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
dns_message_puttempname(soaquery, &name);
|
dns_message_puttempname(soaquery, &name);
|
||||||
}
|
}
|
||||||
dns_message_destroy(&soaquery);
|
dns_message_detach(&soaquery);
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@ -2956,7 +2956,7 @@ fail:
|
|||||||
UNLOCK(&client->lock);
|
UNLOCK(&client->lock);
|
||||||
}
|
}
|
||||||
if (uctx->updatemsg != NULL) {
|
if (uctx->updatemsg != NULL) {
|
||||||
dns_message_destroy(&uctx->updatemsg);
|
dns_message_detach(&uctx->updatemsg);
|
||||||
}
|
}
|
||||||
while ((sa = ISC_LIST_HEAD(uctx->servers)) != NULL) {
|
while ((sa = ISC_LIST_HEAD(uctx->servers)) != NULL) {
|
||||||
ISC_LIST_UNLINK(uctx->servers, sa, link);
|
ISC_LIST_UNLINK(uctx->servers, sa, link);
|
||||||
|
@ -1147,7 +1147,7 @@ dns_dt_parse(isc_mem_t *mctx, isc_region_t *src, dns_dtdata_t **destp) {
|
|||||||
result = dns_message_parse(d->msg, &b, 0);
|
result = dns_message_parse(d->msg, &b, 0);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
if (result != DNS_R_RECOVERABLE) {
|
if (result != DNS_R_RECOVERABLE) {
|
||||||
dns_message_destroy(&d->msg);
|
dns_message_detach(&d->msg);
|
||||||
}
|
}
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -1370,7 +1370,7 @@ dns_dtdata_free(dns_dtdata_t **dp) {
|
|||||||
*dp = NULL;
|
*dp = NULL;
|
||||||
|
|
||||||
if (d->msg != NULL) {
|
if (d->msg != NULL) {
|
||||||
dns_message_destroy(&d->msg);
|
dns_message_detach(&d->msg);
|
||||||
}
|
}
|
||||||
if (d->frame != NULL) {
|
if (d->frame != NULL) {
|
||||||
dnstap__dnstap__free_unpacked(d->frame, NULL);
|
dnstap__dnstap__free_unpacked(d->frame, NULL);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <isc/lang.h>
|
#include <isc/lang.h>
|
||||||
#include <isc/magic.h>
|
#include <isc/magic.h>
|
||||||
|
#include <isc/refcount.h>
|
||||||
|
|
||||||
#include <dns/compress.h>
|
#include <dns/compress.h>
|
||||||
#include <dns/masterdump.h>
|
#include <dns/masterdump.h>
|
||||||
@ -203,6 +204,7 @@ struct dns_sortlist_arg {
|
|||||||
struct dns_message {
|
struct dns_message {
|
||||||
/* public from here down */
|
/* public from here down */
|
||||||
unsigned int magic;
|
unsigned int magic;
|
||||||
|
isc_refcount_t refcount;
|
||||||
|
|
||||||
dns_messageid_t id;
|
dns_messageid_t id;
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
@ -324,8 +326,8 @@ dns_message_reset(dns_message_t *msg, unsigned int intent);
|
|||||||
/*%<
|
/*%<
|
||||||
* Reset a message structure to default state. All internal lists are freed
|
* Reset a message structure to default state. All internal lists are freed
|
||||||
* or reset to a default state as well. This is simply a more efficient
|
* or reset to a default state as well. This is simply a more efficient
|
||||||
* way to call dns_message_destroy() followed by dns_message_allocate(),
|
* way to call dns_message_detach() (assuming last reference is hold),
|
||||||
* since it avoid many memory allocations.
|
* followed by dns_message_create(), since it avoid many memory allocations.
|
||||||
*
|
*
|
||||||
* If any data loanouts (buffers, names, rdatas, etc) were requested,
|
* If any data loanouts (buffers, names, rdatas, etc) were requested,
|
||||||
* the caller must no longer use them after this call.
|
* the caller must no longer use them after this call.
|
||||||
@ -340,16 +342,23 @@ dns_message_reset(dns_message_t *msg, unsigned int intent);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_message_destroy(dns_message_t **msgp);
|
dns_message_attach(dns_message_t *source, dns_message_t **target);
|
||||||
/*%<
|
/*%<
|
||||||
* Destroy all state in the message.
|
* Attach to message 'source'.
|
||||||
*
|
*
|
||||||
* Requires:
|
* Requires:
|
||||||
|
*\li 'source' to be a valid message.
|
||||||
|
*\li 'target' to be non NULL and '*target' to be NULL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_message_detach(dns_message_t **messagep);
|
||||||
|
/*%<
|
||||||
|
* Detach *messagep from its message.
|
||||||
|
* list.
|
||||||
*
|
*
|
||||||
*\li 'msgp' be valid.
|
* Requires:
|
||||||
*
|
*\li '*messagep' to be a valid message.
|
||||||
* Ensures:
|
|
||||||
*\li '*msgp' == NULL
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
@ -539,7 +539,7 @@ msgresetsigs(dns_message_t *msg, bool replying) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Free all but one (or everything) for this message. This is used by
|
* Free all but one (or everything) for this message. This is used by
|
||||||
* both dns_message_reset() and dns_message_destroy().
|
* both dns_message_reset() and dns__message_destroy().
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
msgreset(dns_message_t *msg, bool everything) {
|
msgreset(dns_message_t *msg, bool everything) {
|
||||||
@ -774,6 +774,8 @@ dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp) {
|
|||||||
|
|
||||||
m->cctx = NULL;
|
m->cctx = NULL;
|
||||||
|
|
||||||
|
isc_refcount_init(&m->refcount, 1);
|
||||||
|
|
||||||
*msgp = m;
|
*msgp = m;
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
@ -788,23 +790,38 @@ dns_message_reset(dns_message_t *msg, unsigned int intent) {
|
|||||||
msg->from_to_wire = intent;
|
msg->from_to_wire = intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
dns_message_destroy(dns_message_t **msgp) {
|
dns__message_destroy(dns_message_t *msg) {
|
||||||
dns_message_t *msg;
|
REQUIRE(msg != NULL);
|
||||||
|
REQUIRE(DNS_MESSAGE_VALID(msg));
|
||||||
REQUIRE(msgp != NULL);
|
|
||||||
REQUIRE(DNS_MESSAGE_VALID(*msgp));
|
|
||||||
|
|
||||||
msg = *msgp;
|
|
||||||
*msgp = NULL;
|
|
||||||
|
|
||||||
msgreset(msg, true);
|
msgreset(msg, true);
|
||||||
isc_mempool_destroy(&msg->namepool);
|
isc_mempool_destroy(&msg->namepool);
|
||||||
isc_mempool_destroy(&msg->rdspool);
|
isc_mempool_destroy(&msg->rdspool);
|
||||||
|
isc_refcount_destroy(&msg->refcount);
|
||||||
msg->magic = 0;
|
msg->magic = 0;
|
||||||
isc_mem_putanddetach(&msg->mctx, msg, sizeof(dns_message_t));
|
isc_mem_putanddetach(&msg->mctx, msg, sizeof(dns_message_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_message_attach(dns_message_t *source, dns_message_t **target) {
|
||||||
|
REQUIRE(DNS_MESSAGE_VALID(source));
|
||||||
|
|
||||||
|
isc_refcount_increment(&source->refcount);
|
||||||
|
*target = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_message_detach(dns_message_t **messagep) {
|
||||||
|
REQUIRE(messagep != NULL && DNS_MESSAGE_VALID(*messagep));
|
||||||
|
dns_message_t *msg = *messagep;
|
||||||
|
*messagep = NULL;
|
||||||
|
|
||||||
|
if (isc_refcount_decrement(&msg->refcount) == 1) {
|
||||||
|
dns__message_destroy(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
findname(dns_name_t **foundname, const dns_name_t *target,
|
findname(dns_name_t **foundname, const dns_name_t *target,
|
||||||
dns_namelist_t *section) {
|
dns_namelist_t *section) {
|
||||||
|
@ -4561,8 +4561,8 @@ fctx_destroy(fetchctx_t *fctx) {
|
|||||||
isc_counter_detach(&fctx->qc);
|
isc_counter_detach(&fctx->qc);
|
||||||
fcount_decr(fctx);
|
fcount_decr(fctx);
|
||||||
isc_timer_detach(&fctx->timer);
|
isc_timer_detach(&fctx->timer);
|
||||||
dns_message_destroy(&fctx->rmessage);
|
dns_message_detach(&fctx->rmessage);
|
||||||
dns_message_destroy(&fctx->qmessage);
|
dns_message_detach(&fctx->qmessage);
|
||||||
if (dns_name_countlabels(&fctx->domain) > 0) {
|
if (dns_name_countlabels(&fctx->domain) > 0) {
|
||||||
dns_name_free(&fctx->domain, fctx->mctx);
|
dns_name_free(&fctx->domain, fctx->mctx);
|
||||||
}
|
}
|
||||||
@ -5217,10 +5217,10 @@ cleanup_mctx:
|
|||||||
isc_timer_detach(&fctx->timer);
|
isc_timer_detach(&fctx->timer);
|
||||||
|
|
||||||
cleanup_rmessage:
|
cleanup_rmessage:
|
||||||
dns_message_destroy(&fctx->rmessage);
|
dns_message_detach(&fctx->rmessage);
|
||||||
|
|
||||||
cleanup_qmessage:
|
cleanup_qmessage:
|
||||||
dns_message_destroy(&fctx->qmessage);
|
dns_message_detach(&fctx->qmessage);
|
||||||
|
|
||||||
cleanup_fcount:
|
cleanup_fcount:
|
||||||
fcount_decr(fctx);
|
fcount_decr(fctx);
|
||||||
|
@ -262,7 +262,7 @@ render(isc_buffer_t *buf, unsigned flags, dns_tsigkey_t *key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
dns_compress_invalidate(&cctx);
|
dns_compress_invalidate(&cctx);
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -353,7 +353,7 @@ tsig_tcp_test(void **state) {
|
|||||||
tsigctx = msg->tsigctx;
|
tsigctx = msg->tsigctx;
|
||||||
msg->tsigctx = NULL;
|
msg->tsigctx = NULL;
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
|
|
||||||
result = dst_context_create(key->key, dt_mctx, DNS_LOGCATEGORY_DNSSEC,
|
result = dst_context_create(key->key, dt_mctx, DNS_LOGCATEGORY_DNSSEC,
|
||||||
false, 0, &outctx);
|
false, 0, &outctx);
|
||||||
@ -410,7 +410,7 @@ tsig_tcp_test(void **state) {
|
|||||||
tsigctx = msg->tsigctx;
|
tsigctx = msg->tsigctx;
|
||||||
msg->tsigctx = NULL;
|
msg->tsigctx = NULL;
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create response message 3.
|
* Create response message 3.
|
||||||
@ -461,7 +461,7 @@ tsig_tcp_test(void **state) {
|
|||||||
assert_int_equal(result, ISC_R_SUCCESS);
|
assert_int_equal(result, ISC_R_SUCCESS);
|
||||||
|
|
||||||
isc_buffer_free(&buf);
|
isc_buffer_free(&buf);
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
|
|
||||||
if (outctx != NULL) {
|
if (outctx != NULL) {
|
||||||
dst_context_destroy(&outctx);
|
dst_context_destroy(&outctx);
|
||||||
|
@ -522,12 +522,13 @@ dns_master_stylecreate
|
|||||||
dns_master_styledestroy
|
dns_master_styledestroy
|
||||||
dns_master_styleflags
|
dns_master_styleflags
|
||||||
dns_message_addname
|
dns_message_addname
|
||||||
|
dns_message_attach
|
||||||
dns_message_buildopt
|
dns_message_buildopt
|
||||||
dns_message_checksig
|
dns_message_checksig
|
||||||
dns_message_clonebuffer
|
dns_message_clonebuffer
|
||||||
dns_message_create
|
dns_message_create
|
||||||
dns_message_currentname
|
dns_message_currentname
|
||||||
dns_message_destroy
|
dns_message_detach
|
||||||
dns_message_find
|
dns_message_find
|
||||||
dns_message_findname
|
dns_message_findname
|
||||||
dns_message_findtype
|
dns_message_findtype
|
||||||
|
@ -1187,7 +1187,7 @@ failure:
|
|||||||
dns_message_puttemprdataset(msg, &qrdataset);
|
dns_message_puttemprdataset(msg, &qrdataset);
|
||||||
}
|
}
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
if (soatuple != NULL) {
|
if (soatuple != NULL) {
|
||||||
dns_difftuple_free(&soatuple);
|
dns_difftuple_free(&soatuple);
|
||||||
@ -1304,7 +1304,7 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
|
|||||||
xfrin_log(xfr, ISC_LOG_DEBUG(3), "got %s, retrying with AXFR",
|
xfrin_log(xfr, ISC_LOG_DEBUG(3), "got %s, retrying with AXFR",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
try_axfr:
|
try_axfr:
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
xfrin_reset(xfr);
|
xfrin_reset(xfr);
|
||||||
xfr->reqtype = dns_rdatatype_soa;
|
xfr->reqtype = dns_rdatatype_soa;
|
||||||
xfr->state = XFRST_SOAQUERY;
|
xfr->state = XFRST_SOAQUERY;
|
||||||
@ -1464,7 +1464,7 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
|
|||||||
xfr->tsigctx = msg->tsigctx;
|
xfr->tsigctx = msg->tsigctx;
|
||||||
msg->tsigctx = NULL;
|
msg->tsigctx = NULL;
|
||||||
|
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
|
|
||||||
switch (xfr->state) {
|
switch (xfr->state) {
|
||||||
case XFRST_GOTSOA:
|
case XFRST_GOTSOA:
|
||||||
@ -1510,7 +1510,7 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
|
|||||||
|
|
||||||
failure:
|
failure:
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
xfrin_fail(xfr, result, "failed while receiving responses");
|
xfrin_fail(xfr, result, "failed while receiving responses");
|
||||||
|
@ -12182,7 +12182,7 @@ cleanup_key:
|
|||||||
dns_tsigkey_detach(&key);
|
dns_tsigkey_detach(&key);
|
||||||
}
|
}
|
||||||
cleanup_message:
|
cleanup_message:
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
cleanup:
|
cleanup:
|
||||||
UNLOCK_ZONE(notify->zone);
|
UNLOCK_ZONE(notify->zone);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
@ -12761,7 +12761,7 @@ stub_callback(isc_task_t *task, isc_event_t *event) {
|
|||||||
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write);
|
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write);
|
||||||
dns_db_detach(&stub->db);
|
dns_db_detach(&stub->db);
|
||||||
|
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
dns_request_destroy(&zone->request);
|
dns_request_destroy(&zone->request);
|
||||||
|
|
||||||
@ -12786,7 +12786,7 @@ next_master:
|
|||||||
dns_db_detach(&stub->db);
|
dns_db_detach(&stub->db);
|
||||||
}
|
}
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
dns_request_destroy(&zone->request);
|
dns_request_destroy(&zone->request);
|
||||||
@ -12840,7 +12840,7 @@ next_master:
|
|||||||
|
|
||||||
same_master:
|
same_master:
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
dns_request_destroy(&zone->request);
|
dns_request_destroy(&zone->request);
|
||||||
@ -13266,7 +13266,7 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
|
|||||||
ns_query(zone, rdataset, NULL);
|
ns_query(zone, rdataset, NULL);
|
||||||
}
|
}
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
} else if (isc_serial_eq(soa.serial, oldserial)) {
|
} else if (isc_serial_eq(soa.serial, oldserial)) {
|
||||||
isc_time_t expiretime;
|
isc_time_t expiretime;
|
||||||
@ -13305,13 +13305,13 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
|
|||||||
goto next_master;
|
goto next_master;
|
||||||
}
|
}
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
goto detach;
|
goto detach;
|
||||||
|
|
||||||
next_master:
|
next_master:
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
dns_request_destroy(&zone->request);
|
dns_request_destroy(&zone->request);
|
||||||
@ -13370,7 +13370,7 @@ requeue:
|
|||||||
|
|
||||||
same_master:
|
same_master:
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
dns_request_destroy(&zone->request);
|
dns_request_destroy(&zone->request);
|
||||||
@ -13469,7 +13469,7 @@ cleanup:
|
|||||||
dns_message_puttemprdataset(message, &qrdataset);
|
dns_message_puttemprdataset(message, &qrdataset);
|
||||||
}
|
}
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@ -13699,7 +13699,7 @@ cleanup:
|
|||||||
DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_REFRESH);
|
DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_REFRESH);
|
||||||
}
|
}
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
if (cancel) {
|
if (cancel) {
|
||||||
cancel_refresh(zone);
|
cancel_refresh(zone);
|
||||||
@ -13713,7 +13713,7 @@ skip_master:
|
|||||||
if (key != NULL) {
|
if (key != NULL) {
|
||||||
dns_tsigkey_detach(&key);
|
dns_tsigkey_detach(&key);
|
||||||
}
|
}
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
/*
|
/*
|
||||||
* Skip to next failed / untried master.
|
* Skip to next failed / untried master.
|
||||||
*/
|
*/
|
||||||
@ -13941,7 +13941,7 @@ ns_query(dns_zone_t *zone, dns_rdataset_t *soardataset, dns_stub_t *stub) {
|
|||||||
dns_result_totext(result));
|
dns_result_totext(result));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@ -13958,7 +13958,7 @@ cleanup:
|
|||||||
}
|
}
|
||||||
isc_mem_put(stub->mctx, stub, sizeof(*stub));
|
isc_mem_put(stub->mctx, stub, sizeof(*stub));
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
unlock:
|
unlock:
|
||||||
if (key != NULL) {
|
if (key != NULL) {
|
||||||
@ -14453,7 +14453,7 @@ cleanup:
|
|||||||
if (temprdataset != NULL) {
|
if (temprdataset != NULL) {
|
||||||
dns_message_puttemprdataset(message, &temprdataset);
|
dns_message_puttemprdataset(message, &temprdataset);
|
||||||
}
|
}
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15294,7 +15294,7 @@ notify_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
notify_destroy(notify, false);
|
notify_destroy(notify, false);
|
||||||
}
|
}
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17327,7 +17327,7 @@ forward_callback(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
next_master:
|
next_master:
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
dns_message_destroy(&msg);
|
dns_message_detach(&msg);
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
forward->which++;
|
forward->which++;
|
||||||
|
@ -1581,7 +1581,7 @@ ns__client_put_cb(void *client0) {
|
|||||||
dns_message_puttemprdataset(client->message, &client->opt);
|
dns_message_puttemprdataset(client->message, &client->opt);
|
||||||
}
|
}
|
||||||
|
|
||||||
dns_message_destroy(&client->message);
|
dns_message_detach(&client->message);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Detaching the task must be done after unlinking from
|
* Detaching the task must be done after unlinking from
|
||||||
@ -2342,7 +2342,7 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (client->message != NULL) {
|
if (client->message != NULL) {
|
||||||
dns_message_destroy(&client->message);
|
dns_message_detach(&client->message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client->task != NULL) {
|
if (client->task != NULL) {
|
||||||
|
@ -78,7 +78,7 @@ check_response(isc_buffer_t *buf) {
|
|||||||
|
|
||||||
assert_int_equal(message->rcode, dns_rcode_noerror);
|
assert_int_equal(message->rcode, dns_rcode_noerror);
|
||||||
|
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* test ns_notify_start() */
|
/* test ns_notify_start() */
|
||||||
@ -126,7 +126,7 @@ notify_start(void **state) {
|
|||||||
* handler.
|
* handler.
|
||||||
*/
|
*/
|
||||||
if (client->message != NULL) {
|
if (client->message != NULL) {
|
||||||
dns_message_destroy(&client->message);
|
dns_message_detach(&client->message);
|
||||||
}
|
}
|
||||||
client->message = nmsg;
|
client->message = nmsg;
|
||||||
nmsg = NULL;
|
nmsg = NULL;
|
||||||
|
@ -677,7 +677,7 @@ attach_query_msg_to_client(ns_client_t *client, const char *qnamestr,
|
|||||||
* Destroy the created message as it was rendered into "querybuf" and
|
* Destroy the created message as it was rendered into "querybuf" and
|
||||||
* the latter is all we are going to need from now on.
|
* the latter is all we are going to need from now on.
|
||||||
*/
|
*/
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse the rendered query, storing results in client->message.
|
* Parse the rendered query, storing results in client->message.
|
||||||
@ -690,7 +690,7 @@ put_name:
|
|||||||
put_rdataset:
|
put_rdataset:
|
||||||
dns_message_puttemprdataset(message, &qrdataset);
|
dns_message_puttemprdataset(message, &qrdataset);
|
||||||
destroy_message:
|
destroy_message:
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@ -829,7 +829,7 @@ ns_test_qctx_create(const ns_test_qctx_create_params_t *params,
|
|||||||
*/
|
*/
|
||||||
result = create_qctx_for_client(client, qctxp);
|
result = create_qctx_for_client(client, qctxp);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
goto destroy_query;
|
goto detach_query;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -842,8 +842,8 @@ ns_test_qctx_create(const ns_test_qctx_create_params_t *params,
|
|||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
destroy_query:
|
detach_query:
|
||||||
dns_message_destroy(&client->message);
|
dns_message_detach(&client->message);
|
||||||
detach_view:
|
detach_view:
|
||||||
dns_view_detach(&client->view);
|
dns_view_detach(&client->view);
|
||||||
detach_client:
|
detach_client:
|
||||||
|
@ -3596,7 +3596,7 @@ forward_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
INSIST(client->nupdates > 0);
|
INSIST(client->nupdates > 0);
|
||||||
client->nupdates--;
|
client->nupdates--;
|
||||||
ns_client_sendraw(client, uev->answer);
|
ns_client_sendraw(client, uev->answer);
|
||||||
dns_message_destroy(&uev->answer);
|
dns_message_detach(&uev->answer);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
isc_nmhandle_detach(&client->updatehandle);
|
isc_nmhandle_detach(&client->updatehandle);
|
||||||
}
|
}
|
||||||
|
@ -1602,7 +1602,7 @@ failure:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tcpmsg != NULL) {
|
if (tcpmsg != NULL) {
|
||||||
dns_message_destroy(&tcpmsg);
|
dns_message_detach(&tcpmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cleanup_cctx) {
|
if (cleanup_cctx) {
|
||||||
|
@ -1228,8 +1228,8 @@ main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
/* Cleanup */
|
/* Cleanup */
|
||||||
for (i = 0; i < MAX_PROBES; i++) {
|
for (i = 0; i < MAX_PROBES; i++) {
|
||||||
dns_message_destroy(&probes[i].qmessage);
|
dns_message_detach(&probes[i].qmessage);
|
||||||
dns_message_destroy(&probes[i].rmessage);
|
dns_message_detach(&probes[i].rmessage);
|
||||||
}
|
}
|
||||||
isc_task_detach(&probe_task);
|
isc_task_detach(&probe_task);
|
||||||
dns_client_destroy(&client);
|
dns_client_destroy(&client);
|
||||||
|
@ -113,7 +113,7 @@ cleanup:
|
|||||||
if (qrdataset != NULL) {
|
if (qrdataset != NULL) {
|
||||||
dns_message_puttemprdataset(message, &qrdataset);
|
dns_message_puttemprdataset(message, &qrdataset);
|
||||||
}
|
}
|
||||||
dns_message_destroy(&message);
|
dns_message_detach(&message);
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,8 +246,8 @@ main(int argc, char *argv[]) {
|
|||||||
isc_buffer_free(&outputbuf);
|
isc_buffer_free(&outputbuf);
|
||||||
|
|
||||||
/* Cleanup */
|
/* Cleanup */
|
||||||
dns_message_destroy(&qmessage);
|
dns_message_detach(&qmessage);
|
||||||
dns_message_destroy(&rmessage);
|
dns_message_detach(&rmessage);
|
||||||
isc_mem_destroy(&mctx);
|
isc_mem_destroy(&mctx);
|
||||||
dns_client_destroy(&client);
|
dns_client_destroy(&client);
|
||||||
dns_lib_shutdown();
|
dns_lib_shutdown();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user