2
0
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:
Mark Andrews
2015-09-18 09:52:27 +10:00
parent 7dbeeeaa1e
commit ff55c577ba
2 changed files with 28 additions and 4 deletions

View File

@@ -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.

View File

@@ -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