summaryrefslogtreecommitdiffstats
path: root/src/responder/common/responder_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/common/responder_common.c')
-rw-r--r--src/responder/common/responder_common.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
index a262a2c14..85aa04335 100644
--- a/src/responder/common/responder_common.c
+++ b/src/responder/common/responder_common.c
@@ -689,9 +689,11 @@ static int set_unix_socket(struct resp_ctx *rctx)
if (rctx->sock_name != NULL ) {
/* Set the umask so that permissions are set right on the socket.
* It must be readable and writable by anybody on the system. */
- ret = create_pipe_fd(rctx->sock_name, &rctx->lfd, 0111);
- if (ret != EOK) {
- return ret;
+ if (rctx->lfd == -1) {
+ ret = create_pipe_fd(rctx->sock_name, &rctx->lfd, 0111);
+ if (ret != EOK) {
+ return ret;
+ }
}
accept_ctx = talloc_zero(rctx, struct accept_fd_ctx);
@@ -710,9 +712,11 @@ static int set_unix_socket(struct resp_ctx *rctx)
if (rctx->priv_sock_name != NULL ) {
/* create privileged pipe */
- ret = create_pipe_fd(rctx->priv_sock_name, &rctx->priv_lfd, 0177);
- if (ret != EOK) {
- goto failed;
+ if (rctx->priv_lfd == -1) {
+ ret = create_pipe_fd(rctx->priv_sock_name, &rctx->priv_lfd, 0177);
+ if (ret != EOK) {
+ goto failed;
+ }
}
accept_ctx = talloc_zero(rctx, struct accept_fd_ctx);
@@ -755,7 +759,9 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
struct confdb_ctx *cdb,
struct sss_cmd_table sss_cmds[],
const char *sss_pipe_name,
+ int pipe_fd,
const char *sss_priv_pipe_name,
+ int priv_pipe_fd,
const char *confdb_service_path,
const char *svc_name,
uint16_t svc_version,
@@ -779,6 +785,8 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
rctx->sss_cmds = sss_cmds;
rctx->sock_name = sss_pipe_name;
rctx->priv_sock_name = sss_priv_pipe_name;
+ rctx->lfd = pipe_fd;
+ rctx->priv_lfd = priv_pipe_fd;
rctx->confdb_service_path = confdb_service_path;
rctx->shutting_down = false;