static void
maybeshutdown(void) {
+ /* when called from getinput, doshutdown might be already finished */
+ if (requestmgr == NULL)
+ return;
+
ddebug("Shutting down request manager");
dns_requestmgr_shutdown(requestmgr);
isc_sockaddr_t *srcaddr;
debug("send_gssrequest");
+ REQUIRE(destaddr != NULL);
+
reqinfo = isc_mem_get(gmctx, sizeof(nsu_gssinfo_t));
if (reqinfo == NULL)
fatal("out of memory");
ddebug("Detaching GSS-TSIG keyring");
dns_tsigkeyring_detach(&gssring);
}
- if (kserver != NULL) {
- isc_mem_put(gmctx, kserver, sizeof(isc_sockaddr_t));
- kserver = NULL;
- }
- if (realm != NULL) {
- isc_mem_free(gmctx, realm);
- realm = NULL;
- }
- if (dns_name_dynamic(&tmpzonename)) {
- dns_name_free(&tmpzonename, gmctx);
- }
- if (dns_name_dynamic(&restart_master)) {
- dns_name_free(&restart_master, gmctx);
- }
#endif
if (sig0key != NULL)
ddebug("Destroying name state");
dns_name_destroy();
+#ifdef GSSAPI
+ /*
+ * Cleanup GSSAPI resources after taskmgr has been destroyed.
+ */
+ if (kserver != NULL) {
+ isc_mem_put(gmctx, kserver, sizeof(isc_sockaddr_t));
+ kserver = NULL;
+ }
+ if (realm != NULL) {
+ isc_mem_free(gmctx, realm);
+ realm = NULL;
+ }
+ if (dns_name_dynamic(&tmpzonename)) {
+ dns_name_free(&tmpzonename, gmctx);
+ }
+ if (dns_name_dynamic(&restart_master)) {
+ dns_name_free(&restart_master, gmctx);
+ }
+#endif
+
ddebug("Removing log context");
isc_log_destroy(&glctx);