changeset 3506:f6558b6ba292 draft

Make fork process clearer.
author Roy Marples <roy@marples.name>
date Sun, 10 Apr 2016 18:46:12 +0000
parents c5856fbb76ff
children 552f81f32a8f
files dhcpcd.c
diffstat 1 files changed, 3 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/dhcpcd.c	Fri Apr 08 20:54:04 2016 +0000
+++ b/dhcpcd.c	Sun Apr 10 18:46:12 2016 +0000
@@ -345,24 +345,19 @@
 			dup2(fd, STDERR_FILENO);
 			close(fd);
 		}
-		break;
+		ctx->options |= DHCPCD_DAEMONISED;
+		return 0;
 	default:
 		/* Wait for child to detach */
 		close(sidpipe[1]);
 		if (read(sidpipe[0], &buf, 1) == -1)
 			logger(ctx, LOG_ERR, "failed to read child: %m");
 		close(sidpipe[0]);
-		break;
-	}
-	/* Done with the fd now */
-	if (pid != 0) {
 		logger(ctx, LOG_INFO, "forked to background, child pid %d", pid);
 		ctx->options |= DHCPCD_FORKED;
 		eloop_exit(ctx->eloop, EXIT_SUCCESS);
 		return pid;
 	}
-	ctx->options |= DHCPCD_DAEMONISED;
-	return pid;
 #endif
 }
 
@@ -1800,7 +1795,7 @@
 			if (pid == -1)
 				logger(&ctx, LOG_ERR, "%s: pidfile_lock: %m",
 				    __func__);
-			else	
+			else
 				logger(&ctx, LOG_ERR, ""PACKAGE
 				    " already running on pid %d (%s)",
 				    pid, ctx.pidfile);