Index: src/include/radiusd.h
===================================================================
RCS file: /source/radiusd/src/include/radiusd.h,v
retrieving revision 1.156.2.4
diff -u -r1.156.2.4 radiusd.h
--- src/include/radiusd.h	11 Apr 2005 23:45:21 -0000	1.156.2.4
+++ src/include/radiusd.h	18 Jan 2007 15:05:15 -0000
@@ -405,7 +405,7 @@
 extern		int thread_pool_init(void);
 extern		int thread_pool_clean(time_t now);
 extern		int thread_pool_addrequest(REQUEST *, RAD_REQUEST_FUNP);
-extern		pid_t rad_fork(int exec_wait);
+extern		pid_t rad_fork(void);
 extern		pid_t rad_waitpid(pid_t pid, int *status, int options);
 extern          int total_active_threads(void);
 
Index: src/main/threads.c
===================================================================
RCS file: /source/radiusd/src/main/threads.c,v
retrieving revision 1.77.2.7
diff -u -r1.77.2.7 threads.c
--- src/main/threads.c	17 Oct 2005 18:38:07 -0000	1.77.2.7
+++ src/main/threads.c	18 Jan 2007 15:05:15 -0000
@@ -982,12 +982,10 @@
 /*
  *	Thread wrapper for fork().
  */
-pid_t rad_fork(int exec_wait)
+pid_t rad_fork(void)
 {
 	pid_t child_pid;
 
-	if (exec_wait) return fork();
-
 	/*
 	 *	Ensure that children are reaped always.
 	 */
Index: src/main/exec.c
===================================================================
RCS file: /source/radiusd/src/main/exec.c,v
retrieving revision 1.42.2.1.2.2
diff -u -r1.42.2.1.2.2 exec.c
--- src/main/exec.c	6 Oct 2006 23:39:21 -0000	1.42.2.1.2.2
+++ src/main/exec.c	18 Jan 2007 15:05:16 -0000
@@ -311,7 +311,13 @@
 		output_pairs = NULL;
 	}
 
-	if ((pid = rad_fork(exec_wait)) == 0) {
+	if (exec_wait) {
+		pid = rad_fork();	/* remember PID */
+	} else {
+		pid = fork();		/* don't wait */
+	}
+
+	if (pid == 0) {
 #define MAX_ENVP 1024
 		int devnull;
 		char *envp[MAX_ENVP];
Index: src/main/session.c
===================================================================
RCS file: /source/radiusd/src/main/session.c,v
retrieving revision 1.21.2.1.2.1
diff -u -r1.21.2.1.2.1 session.c
--- src/main/session.c	24 Mar 2006 17:54:57 -0000	1.21.2.1.2.1
+++ src/main/session.c	18 Jan 2007 15:05:16 -0000
@@ -155,7 +155,7 @@
 	/*
 	 *	Fork.
 	 */
-	if ((pid = rad_fork(1)) < 0) { /* do wait for the fork'd result */
+	if ((pid = rad_fork()) < 0) { /* do wait for the fork'd result */
 		radlog(L_ERR, "Accounting: Failed in fork(): Cannot run checkrad\n");
 		return -1;
 	}
