From fe4626c5d6b380835b3fc1fc35ab6164e6404032 Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Thu, 26 Apr 2012 14:14:43 +0200 Subject: [PATCH] Close client side of IPC fd in parent --- libatalk/dsi/dsi_getsess.c | 3 ++- libatalk/util/server_child.c | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libatalk/dsi/dsi_getsess.c b/libatalk/dsi/dsi_getsess.c index ea22c2dc..93d22435 100644 --- a/libatalk/dsi/dsi_getsess.c +++ b/libatalk/dsi/dsi_getsess.c @@ -66,7 +66,7 @@ afp_child_t *dsi_getsession(DSI *dsi, server_child *serv_children, int tickleval default: /* parent */ /* using SIGQUIT is hokey, but the child might not have * re-established its signal handler for SIGTERM yet. */ - if ((child = server_child_add(serv_children, CHILD_DSIFORK, pid, ipc_fds)) == NULL) { + if ((child = server_child_add(serv_children, CHILD_DSIFORK, pid, ipc_fds[0])) == NULL) { LOG(log_error, logtype_dsi, "dsi_getsess: %s", strerror(errno)); dsi->header.dsi_flags = DSIFL_REPLY; dsi->header.dsi_code = DSIERR_SERVBUSY; @@ -74,6 +74,7 @@ afp_child_t *dsi_getsession(DSI *dsi, server_child *serv_children, int tickleval dsi->header.dsi_code = DSIERR_OK; kill(pid, SIGQUIT); } + close(ipc_fds[1]); dsi->proto_close(dsi); return child; } diff --git a/libatalk/util/server_child.c b/libatalk/util/server_child.c index 1b30593e..7fea57c8 100644 --- a/libatalk/util/server_child.c +++ b/libatalk/util/server_child.c @@ -218,9 +218,6 @@ void server_child_free(server_child *children) if (child->ipc_fds[0] != -1) close(child->ipc_fds[0]); - if (child->ipc_fds[1] != -1) - close(child->ipc_fds[1]); - if (child->clientid) { free(child->clientid); } -- 2.39.2