From bdbbb4be07bb33fe083baef2bd0ef38b91c11120 Mon Sep 17 00:00:00 2001 From: Pavel Zhukov Date: Thu, 21 Feb 2019 10:44:06 +0100 Subject: [PATCH 21/28] Load leases DB in non-replay mode only --- server/confpars.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/confpars.c b/server/confpars.c index 5a6396b..6e08ad7 100644 --- a/server/confpars.c +++ b/server/confpars.c @@ -134,6 +134,11 @@ isc_result_t read_conf_file (const char *filename, struct group *group, cfile = (struct parse *)0; #if defined (TRACING) + // No need to dmalloc huge memory region if we're not going to re-play + if (!trace_record()){ + status = new_parse(&cfile, file, NULL, 0, filename, 0); + goto noreplay; + }; flen = lseek (file, (off_t)0, SEEK_END); if (flen < 0) { boom: @@ -165,7 +170,6 @@ isc_result_t read_conf_file (const char *filename, struct group *group, if (result != ulen) log_fatal ("%s: short read of %d bytes instead of %d.", filename, ulen, result); - close (file); memfile: /* If we're recording, write out the filename and file contents. */ if (trace_record ()) @@ -174,6 +178,9 @@ isc_result_t read_conf_file (const char *filename, struct group *group, #else status = new_parse(&cfile, file, NULL, 0, filename, 0); #endif + noreplay: + if (!trace_playback()) + close (file); if (status != ISC_R_SUCCESS || cfile == NULL) return status; @@ -183,7 +190,8 @@ isc_result_t read_conf_file (const char *filename, struct group *group, status = conf_file_subparse (cfile, group, group_type); end_parse (&cfile); #if defined (TRACING) - dfree (dbuf, MDL); + if (trace_record()) + dfree (dbuf, MDL); #endif return status; } -- 2.35.1