From 074d7f764b783b3dcb00b42e2e9caa3d1797017a Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Thu, 5 Apr 2012 08:18:07 +0200 Subject: [PATCH] Closing of the parent IPC fd at the right place --- etc/afpd/afp_config.c | 1 - libatalk/dsi/dsi_getsess.c | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/afpd/afp_config.c b/etc/afpd/afp_config.c index 291148c3..c15e0b7d 100644 --- a/etc/afpd/afp_config.c +++ b/etc/afpd/afp_config.c @@ -231,7 +231,6 @@ static afp_child_t *dsi_start(AFPConfig *config, AFPConfig *configs, if (parent_or_child == 1) { configfree(configs, config); config->obj.ipc_fd = child->ipc_fds[1]; - close(child->ipc_fds[0]); /* Close parent IPC fd */ free(child); afp_over_dsi(&config->obj); /* start a session */ exit (0); diff --git a/libatalk/dsi/dsi_getsess.c b/libatalk/dsi/dsi_getsess.c index 93d22435..7a6109d1 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[0])) == NULL) { + if ((child = server_child_add(serv_children, CHILD_DSIFORK, pid, ipc_fds)) == NULL) { LOG(log_error, logtype_dsi, "dsi_getsess: %s", strerror(errno)); dsi->header.dsi_flags = DSIFL_REPLY; dsi->header.dsi_code = DSIERR_SERVBUSY; @@ -91,6 +91,7 @@ afp_child_t *dsi_getsession(DSI *dsi, server_child *serv_children, int tickleval } /* get rid of some stuff */ + close(ipc_fds[0]); close(dsi->serversock); server_child_free(serv_children); -- 2.39.2