dhcp/SOURCES/dhcp-replay_file_limit.patch

45 lines
1.4 KiB
Diff
Raw Normal View History

2019-11-05 19:03:44 +00:00
diff --git a/server/confpars.c b/server/confpars.c
2020-04-28 09:34:21 +00:00
index d79489b..2b1e393 100644
2019-11-05 19:03:44 +00:00
--- 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
2020-04-28 09:34:21 +00:00
+ if (!trace_record()){
2019-11-05 19:03:44 +00:00
+ status = new_parse(&cfile, file, NULL, 0, filename, 0);
+ goto noreplay;
+ };
flen = lseek (file, (off_t)0, SEEK_END);
if (flen < 0) {
boom:
2020-04-28 09:34:21 +00:00
@@ -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,
2019-11-05 19:03:44 +00:00
#else
status = new_parse(&cfile, file, NULL, 0, filename, 0);
#endif
+ noreplay:
2020-04-28 09:34:21 +00:00
+ if (!trace_playback())
+ close (file);
2019-11-05 19:03:44 +00:00
if (status != ISC_R_SUCCESS || cfile == NULL)
return status;
2020-04-28 09:34:21 +00:00
@@ -183,7 +190,8 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
2019-11-05 19:03:44 +00:00
status = conf_file_subparse (cfile, group, group_type);
end_parse (&cfile);
2020-04-28 09:34:21 +00:00
#if defined (TRACING)
2019-11-05 19:03:44 +00:00
- dfree (dbuf, MDL);
2020-04-28 09:34:21 +00:00
+ if (trace_record())
+ dfree (dbuf, MDL);
#endif
2019-11-05 19:03:44 +00:00
return status;
}