$OpenBSD: patch-bin_named_server_c,v 1.1 2003/01/25 14:14:37 jakob Exp $
--- bin/named/server.c.orig	Wed Jul 10 06:27:23 2002
+++ bin/named/server.c	Tue Jan 21 08:55:12 2003
@@ -1956,7 +1956,7 @@ load_configuration(const char *filename,
 			const char *randomdev = cfg_obj_asstring(obj);
 			result = isc_entropy_createfilesource(ns_g_entropy,
 							      randomdev);
-			if (result != ISC_R_SUCCESS)
+			if (result != ISC_R_SUCCESS && ns_g_chrootdir == NULL) {
 				isc_log_write(ns_g_lctx,
 					      NS_LOGCATEGORY_GENERAL,
 					      NS_LOGMODULE_SERVER,
@@ -1965,6 +1965,22 @@ load_configuration(const char *filename,
 					      "%s: %s",
 					      randomdev,
 					      isc_result_totext(result));
+			}
+#ifdef PATH_RANDOMDEV
+			if (result != ISC_R_SUCCESS && ns_g_chrootdir != NULL) {
+				isc_log_write(ns_g_lctx,
+					      NS_LOGCATEGORY_GENERAL,
+					      NS_LOGMODULE_SERVER,
+					      ISC_LOG_INFO,
+					      "using pre-chroot entropy source "
+					      "%s",
+					      PATH_RANDOMDEV);
+		  		isc_entropy_detach(&ns_g_entropy);
+				isc_entropy_attach(ns_g_fallbackentropy,
+						   &ns_g_entropy);
+
+			}
+#endif
 		}
 	}
 
@@ -2049,13 +2065,17 @@ load_configuration(const char *filename,
 		}
 	}
 
-	obj = NULL;
-	if (ns_config_get(maps, "pid-file", &obj) == ISC_R_SUCCESS)
-		ns_os_writepidfile(cfg_obj_asstring(obj), first_time);
-	else if (ns_g_lwresdonly)
-		ns_os_writepidfile(lwresd_g_defaultpidfile, first_time);
-	else
-		ns_os_writepidfile(ns_g_defaultpidfile, first_time);
+	if (ns_g_pidfile != NULL) {
+		ns_os_writepidfile(ns_g_pidfile, first_time);
+	} else {
+		obj = NULL;
+		if (ns_config_get(maps, "pid-file", &obj) == ISC_R_SUCCESS)
+			ns_os_writepidfile(cfg_obj_asstring(obj), first_time);
+		else if (ns_g_lwresdonly)
+			ns_os_writepidfile(lwresd_g_defaultpidfile, first_time);
+		else
+			ns_os_writepidfile(ns_g_defaultpidfile, first_time);
+	}
 
 	obj = NULL;
 	result = ns_config_get(maps, "statistics-file", &obj);
