mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-26 11:47:31 +00:00
Add function to close all unneeded descriptors after fork(2).
MFC after: 1 week
This commit is contained in:
parent
70db96bf67
commit
c3c56f8e41
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218041
@ -1,6 +1,6 @@
|
||||
/*-
|
||||
* Copyright (c) 2009-2010 The FreeBSD Foundation
|
||||
* Copyright (c) 2010 Pawel Jakub Dawidek <pjd@FreeBSD.org>
|
||||
* Copyright (c) 2010-2011 Pawel Jakub Dawidek <pjd@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software was developed by Pawel Jakub Dawidek under sponsorship from
|
||||
@ -93,6 +93,32 @@ g_gate_load(void)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
descriptors_cleanup(struct hast_resource *res)
|
||||
{
|
||||
struct hast_resource *tres;
|
||||
|
||||
TAILQ_FOREACH(tres, &cfg->hc_resources, hr_next) {
|
||||
if (tres == res) {
|
||||
PJDLOG_VERIFY(res->hr_role == HAST_ROLE_SECONDARY ||
|
||||
(res->hr_remotein == NULL &&
|
||||
res->hr_remoteout == NULL));
|
||||
continue;
|
||||
}
|
||||
if (tres->hr_remotein != NULL)
|
||||
proto_close(tres->hr_remotein);
|
||||
if (tres->hr_remoteout != NULL)
|
||||
proto_close(tres->hr_remoteout);
|
||||
}
|
||||
if (cfg->hc_controlin != NULL)
|
||||
proto_close(cfg->hc_controlin);
|
||||
proto_close(cfg->hc_controlconn);
|
||||
proto_close(cfg->hc_listenconn);
|
||||
(void)pidfile_close(pfh);
|
||||
hook_fini();
|
||||
pjdlog_fini();
|
||||
}
|
||||
|
||||
static void
|
||||
child_exit_log(unsigned int pid, int status)
|
||||
{
|
||||
|
@ -43,6 +43,8 @@ extern const char *cfgpath;
|
||||
extern bool sigexit_received;
|
||||
extern struct pidfh *pfh;
|
||||
|
||||
void descriptors_cleanup(struct hast_resource *res);
|
||||
|
||||
void hastd_primary(struct hast_resource *res);
|
||||
void hastd_secondary(struct hast_resource *res, struct nv *nvin);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user