Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jan 2011 21:52:37 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218043 - head/sbin/hastd
Message-ID:  <201101282152.p0SLqbs1001389@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pjd
Date: Fri Jan 28 21:52:37 2011
New Revision: 218043
URL: http://svn.freebsd.org/changeset/base/218043

Log:
  Close all unneeded descriptors after fork(2).
  
  MFC after:	1 week

Modified:
  head/sbin/hastd/primary.c
  head/sbin/hastd/secondary.c

Modified: head/sbin/hastd/primary.c
==============================================================================
--- head/sbin/hastd/primary.c	Fri Jan 28 21:51:40 2011	(r218042)
+++ head/sbin/hastd/primary.c	Fri Jan 28 21:52:37 2011	(r218043)
@@ -790,7 +790,7 @@ hastd_primary(struct hast_resource *res)
 {
 	pthread_t td;
 	pid_t pid;
-	int error;
+	int error, mode;
 
 	/*
 	 * Create communication channel between parent and child.
@@ -822,19 +822,24 @@ hastd_primary(struct hast_resource *res)
 		/* This is parent. */
 		/* Declare that we are receiver. */
 		proto_recv(res->hr_event, NULL, 0);
+		/* Declare that we are sender. */
+		proto_send(res->hr_ctrl, NULL, 0);
 		res->hr_workerpid = pid;
 		return;
 	}
 
 	gres = res;
-
-	(void)pidfile_close(pfh);
-	hook_fini();
-
-	setproctitle("%s (primary)", res->hr_name);
+	mode = pjdlog_mode_get();
 
 	/* Declare that we are sender. */
 	proto_send(res->hr_event, NULL, 0);
+	/* Declare that we are receiver. */
+	proto_recv(res->hr_ctrl, NULL, 0);
+	descriptors_cleanup(res);
+
+	pjdlog_init(mode);
+	pjdlog_prefix_set("[%s] (%s) ", res->hr_name, role2str(res->hr_role));
+	setproctitle("%s (primary)", res->hr_name);
 
 	init_local(res);
 	init_ggate(res);

Modified: head/sbin/hastd/secondary.c
==============================================================================
--- head/sbin/hastd/secondary.c	Fri Jan 28 21:51:40 2011	(r218042)
+++ head/sbin/hastd/secondary.c	Fri Jan 28 21:52:37 2011	(r218043)
@@ -347,7 +347,7 @@ hastd_secondary(struct hast_resource *re
 	sigset_t mask;
 	pthread_t td;
 	pid_t pid;
-	int error;
+	int error, mode;
 
 	/*
 	 * Create communication channel between parent and child.
@@ -380,23 +380,28 @@ hastd_secondary(struct hast_resource *re
 		res->hr_remoteout = NULL;
 		/* Declare that we are receiver. */
 		proto_recv(res->hr_event, NULL, 0);
+		/* Declare that we are sender. */
+		proto_send(res->hr_ctrl, NULL, 0);
 		res->hr_workerpid = pid;
 		return;
 	}
 
 	gres = res;
+	mode = pjdlog_mode_get();
 
-	(void)pidfile_close(pfh);
-	hook_fini();
+	/* Declare that we are sender. */
+	proto_send(res->hr_event, NULL, 0);
+	/* Declare that we are receiver. */
+	proto_recv(res->hr_ctrl, NULL, 0);
+	descriptors_cleanup(res);
 
+	pjdlog_init(mode);
+	pjdlog_prefix_set("[%s] (%s) ", res->hr_name, role2str(res->hr_role));
 	setproctitle("%s (secondary)", res->hr_name);
 
 	PJDLOG_VERIFY(sigemptyset(&mask) == 0);
 	PJDLOG_VERIFY(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
 
-	/* Declare that we are sender. */
-	proto_send(res->hr_event, NULL, 0);
-
 	/* Error in setting timeout is not critical, but why should it fail? */
 	if (proto_timeout(res->hr_remotein, 0) < 0)
 		pjdlog_errno(LOG_WARNING, "Unable to set connection timeout");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101282152.p0SLqbs1001389>