svn commit: r218043 - head/sbin/hastd
Pawel Jakub Dawidek
pjd at FreeBSD.org
Fri Jan 28 21:52:37 UTC 2011
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");
More information about the svn-src-head
mailing list