mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
4215. [bug] nsupdate: skip to next request on GSSTKEY create
failure. [RT #40685]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
||||
4215. [bug] nsupdate: skip to next request on GSSTKEY create
|
||||
failure. [RT #40685]
|
||||
|
||||
4214. [protocol] Add support for TALINK. [RT #40544]
|
||||
|
||||
4213. [bug] Don't reuse a cache across multiple classes.
|
||||
|
@@ -219,6 +219,8 @@ typedef struct nsu_gssinfo {
|
||||
gss_ctx_id_t context;
|
||||
} nsu_gssinfo_t;
|
||||
|
||||
static void
|
||||
failed_gssrequest();
|
||||
static void
|
||||
start_gssrequest(dns_name_t *master);
|
||||
static void
|
||||
@@ -2739,6 +2741,15 @@ get_ticket_realm(isc_mem_t *mctx) {
|
||||
fprintf(stderr, "Found realm from ticket: %s\n", realm+1);
|
||||
}
|
||||
|
||||
static void
|
||||
failed_gssrequest() {
|
||||
seenerror = ISC_TRUE;
|
||||
|
||||
dns_name_free(&tmpzonename, gmctx);
|
||||
dns_name_free(&restart_master, gmctx);
|
||||
|
||||
done_update();
|
||||
}
|
||||
|
||||
static void
|
||||
start_gssrequest(dns_name_t *master) {
|
||||
@@ -2746,7 +2757,7 @@ start_gssrequest(dns_name_t *master) {
|
||||
isc_buffer_t buf;
|
||||
isc_result_t result;
|
||||
isc_uint32_t val = 0;
|
||||
dns_message_t *rmsg;
|
||||
dns_message_t *rmsg = NULL;
|
||||
dns_request_t *request = NULL;
|
||||
dns_name_t *servname;
|
||||
dns_fixedname_t fname;
|
||||
@@ -2826,14 +2837,24 @@ start_gssrequest(dns_name_t *master) {
|
||||
result = dns_tkey_buildgssquery(rmsg, keyname, servname, NULL, 0,
|
||||
&context, use_win2k_gsstsig,
|
||||
gmctx, &err_message);
|
||||
if (result == ISC_R_FAILURE)
|
||||
fatal("tkey query failed: %s",
|
||||
err_message != NULL ? err_message : "unknown error");
|
||||
if (result == ISC_R_FAILURE) {
|
||||
fprintf(stderr, "tkey query failed: %s\n",
|
||||
err_message != NULL ? err_message : "unknown error");
|
||||
goto failure;
|
||||
}
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("dns_tkey_buildgssquery failed: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
send_gssrequest(kserver, rmsg, &request, context);
|
||||
return;
|
||||
|
||||
failure:
|
||||
if (rmsg != NULL)
|
||||
dns_message_destroy(&rmsg);
|
||||
if (err_message != NULL)
|
||||
isc_mem_free(gmctx, err_message);
|
||||
failed_gssrequest();
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user