summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Zidek <mzidek@redhat.com>2014-10-15 18:01:55 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-10-22 15:44:39 +0200
commit8bccd95e275fae760a991da394235e4e70e57bbd (patch)
tree1ecb2c372b0626c1feb1465cf7ae26626d3c1763
parent4a5cced91df68a85ef0b30de8efe104c8a0aab7a (diff)
downloadsssd-8bccd95e275fae760a991da394235e4e70e57bbd.tar.gz
sssd-8bccd95e275fae760a991da394235e4e70e57bbd.tar.xz
sssd-8bccd95e275fae760a991da394235e4e70e57bbd.zip
responders: Do not initialize pipe fd if already present
Allow to skip initialization of pipe file descriptor if the responder context already has one. Reviewed-by: Pavel Reichl <preichl@redhat.com> Reviewed-by: Simo Sorce <simo@redhat.com>
-rw-r--r--src/responder/autofs/autofssrv.c2
-rw-r--r--src/responder/common/responder.h2
-rw-r--r--src/responder/common/responder_common.c20
-rw-r--r--src/responder/ifp/ifpsrv.c2
-rw-r--r--src/responder/nss/nsssrv.c2
-rw-r--r--src/responder/pac/pacsrv.c2
-rw-r--r--src/responder/pam/pamsrv.c4
-rw-r--r--src/responder/ssh/sshsrv.c2
-rw-r--r--src/responder/sudo/sudosrv.c2
9 files changed, 24 insertions, 14 deletions
diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c
index 931cf018b..12a7a777e 100644
--- a/src/responder/autofs/autofssrv.c
+++ b/src/responder/autofs/autofssrv.c
@@ -132,7 +132,7 @@ autofs_process_init(TALLOC_CTX *mem_ctx,
autofs_cmds = get_autofs_cmds();
ret = sss_process_init(mem_ctx, ev, cdb,
autofs_cmds,
- SSS_AUTOFS_SOCKET_NAME, NULL,
+ SSS_AUTOFS_SOCKET_NAME, -1, NULL, -1,
CONFDB_AUTOFS_CONF_ENTRY,
SSS_AUTOFS_SBUS_SERVICE_NAME,
SSS_AUTOFS_SBUS_SERVICE_VERSION,
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h
index d23371078..8837e1142 100644
--- a/src/responder/common/responder.h
+++ b/src/responder/common/responder.h
@@ -159,7 +159,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,
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;
diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
index 8d8fe885a..eddeec981 100644
--- a/src/responder/ifp/ifpsrv.c
+++ b/src/responder/ifp/ifpsrv.c
@@ -310,7 +310,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
ifp_cmds = get_ifp_cmds();
ret = sss_process_init(mem_ctx, ev, cdb,
ifp_cmds,
- NULL, NULL,
+ NULL, -1, NULL, -1,
CONFDB_IFP_CONF_ENTRY,
SSS_IFP_SBUS_SERVICE_NAME,
SSS_IFP_SBUS_SERVICE_VERSION,
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
index dbbdb4f84..cfb146464 100644
--- a/src/responder/nss/nsssrv.c
+++ b/src/responder/nss/nsssrv.c
@@ -392,7 +392,7 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
ret = sss_process_init(mem_ctx, ev, cdb,
nss_cmds,
- SSS_NSS_SOCKET_NAME, NULL,
+ SSS_NSS_SOCKET_NAME, -1, NULL, -1,
CONFDB_NSS_CONF_ENTRY,
NSS_SBUS_SERVICE_NAME,
NSS_SBUS_SERVICE_VERSION,
diff --git a/src/responder/pac/pacsrv.c b/src/responder/pac/pacsrv.c
index b76691de8..e427cd756 100644
--- a/src/responder/pac/pacsrv.c
+++ b/src/responder/pac/pacsrv.c
@@ -119,7 +119,7 @@ int pac_process_init(TALLOC_CTX *mem_ctx,
ret = sss_process_init(mem_ctx, ev, cdb,
pac_cmds,
- SSS_PAC_SOCKET_NAME, NULL,
+ SSS_PAC_SOCKET_NAME, -1, NULL, -1,
CONFDB_PAC_CONF_ENTRY,
PAC_SBUS_SERVICE_NAME,
PAC_SBUS_SERVICE_VERSION,
diff --git a/src/responder/pam/pamsrv.c b/src/responder/pam/pamsrv.c
index 91b395080..a3f866273 100644
--- a/src/responder/pam/pamsrv.c
+++ b/src/responder/pam/pamsrv.c
@@ -194,8 +194,8 @@ static int pam_process_init(TALLOC_CTX *mem_ctx,
pam_cmds = get_pam_cmds();
ret = sss_process_init(mem_ctx, ev, cdb,
pam_cmds,
- SSS_PAM_SOCKET_NAME,
- SSS_PAM_PRIV_SOCKET_NAME,
+ SSS_PAM_SOCKET_NAME, -1,
+ SSS_PAM_PRIV_SOCKET_NAME, -1,
CONFDB_PAM_CONF_ENTRY,
SSS_PAM_SBUS_SERVICE_NAME,
SSS_PAM_SBUS_SERVICE_VERSION,
diff --git a/src/responder/ssh/sshsrv.c b/src/responder/ssh/sshsrv.c
index 1328d1746..b154ee1ba 100644
--- a/src/responder/ssh/sshsrv.c
+++ b/src/responder/ssh/sshsrv.c
@@ -92,7 +92,7 @@ int ssh_process_init(TALLOC_CTX *mem_ctx,
ssh_cmds = get_ssh_cmds();
ret = sss_process_init(mem_ctx, ev, cdb,
ssh_cmds,
- SSS_SSH_SOCKET_NAME, NULL,
+ SSS_SSH_SOCKET_NAME, -1, NULL, -1,
CONFDB_SSH_CONF_ENTRY,
SSS_SSH_SBUS_SERVICE_NAME,
SSS_SSH_SBUS_SERVICE_VERSION,
diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c
index 30752c9da..038e3fd7d 100644
--- a/src/responder/sudo/sudosrv.c
+++ b/src/responder/sudo/sudosrv.c
@@ -93,7 +93,7 @@ int sudo_process_init(TALLOC_CTX *mem_ctx,
sudo_cmds = get_sudo_cmds();
ret = sss_process_init(mem_ctx, ev, cdb,
sudo_cmds,
- SSS_SUDO_SOCKET_NAME, NULL,
+ SSS_SUDO_SOCKET_NAME, -1, NULL, -1,
CONFDB_SUDO_CONF_ENTRY,
SSS_SUDO_SBUS_SERVICE_NAME,
SSS_SUDO_SBUS_SERVICE_VERSION,