45d60a
diff --git a/server/confpars.c b/server/confpars.c
45d60a
index a9b4b57..761b102 100644
45d60a
--- a/server/confpars.c
45d60a
+++ b/server/confpars.c
45d60a
@@ -168,7 +168,6 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
45d60a
 	if (result != ulen)
45d60a
 		log_fatal ("%s: short read of %d bytes instead of %d.",
45d60a
 			   filename, ulen, result);
45d60a
-	close (file);
45d60a
       memfile:
45d60a
 	/* If we're recording, write out the filename and file contents. */
45d60a
 	if (trace_record ())
45d60a
@@ -179,6 +178,7 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
45d60a
 	status = new_parse(&cfile, file, NULL, 0, filename, 0);
45d60a
 #endif
45d60a
       noreplay:
45d60a
+	close (file);
45d60a
 	if (status != ISC_R_SUCCESS || cfile == NULL)
45d60a
 		return status;
45d60a