fstrm_iothr_options_set_reopen_interval(fopt, i);
}
- CHECKM(dns_dt_create(named_g_mctx, dmode, dpath,
- &fopt, &named_g_server->dtenv),
+ CHECKM(dns_dt_create2(named_g_mctx, dmode, dpath,
+ &fopt, named_g_server->task,
+ &named_g_server->dtenv),
"unable to create dnstap environment");
CHECKM(dns_dt_setupfile(named_g_server->dtenv,
return (DNS_R_SYNTAX);
}
- result = isc_task_beginexclusive(server->task);
- RUNTIME_CHECK(result == ISC_R_SUCCESS);
result = dns_dt_reopen(server->dtenv, backups);
- isc_task_endexclusive(server->task);
return (result);
#else
UNUSED(server);
#include <isc/once.h>
#include <isc/print.h>
#include <isc/sockaddr.h>
+#include <isc/task.h>
#include <isc/thread.h>
#include <isc/time.h>
#include <isc/types.h>
REQUIRE(VALID_DTENV(env));
+ /*
+ * Run in task-exclusive mode.
+ */
+ result = isc_task_beginexclusive(env->reopen_task);
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
+
/*
* Check that we can create a new fw object.
*/
fwopt = fstrm_writer_options_init();
if (fwopt == NULL) {
+ isc_task_endexclusive(env->reopen_task);
return (ISC_R_NOMEMORY);
}
if (fuwopt != NULL)
fstrm_unix_writer_options_destroy(&fuwopt);
+ isc_task_endexclusive(env->reopen_task);
+
return (result);
}
* keep. If 'roll' is negative, or if 'env->mode' is dns_dtmode_unix,
* then the channel is simply reopened.
*
- * Note: dns_dt_reopen() must be called in task exclusive mode.
+ * Note: dns_dt_reopen() uses task-exclusive mode and must be run in the
+ * context of env->reopen_task.
*
* Requires:
*\li 'env' is a valid dnstap environment.