diff options
Diffstat (limited to 'utils/gssd')
-rw-r--r-- | utils/gssd/gssd.c | 6 | ||||
-rw-r--r-- | utils/gssd/gssd.h | 1 | ||||
-rw-r--r-- | utils/gssd/gssd_main_loop.c | 4 |
3 files changed, 9 insertions, 2 deletions
diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c index 8ee478b..fdad153 100644 --- a/utils/gssd/gssd.c +++ b/utils/gssd/gssd.c @@ -54,6 +54,7 @@ #include "err_util.h" #include "gss_util.h" #include "krb5_util.h" +#include "nfslib.h" char pipefs_dir[PATH_MAX] = GSSD_PIPEFS_DIR; char keytabfile[PATH_MAX] = GSSD_DEFAULT_KEYTAB_FILE; @@ -63,6 +64,7 @@ int use_memcache = 0; int root_uses_machine_creds = 1; unsigned int context_timeout = 0; char *preferred_realm = NULL; +int pipefds[2] = { -1, -1 }; void sig_die(int signal) @@ -187,8 +189,8 @@ main(int argc, char *argv[]) if (gssd_check_mechs() != 0) errx(1, "Problem with gssapi library"); - if (!fg && daemon(0, 0) < 0) - errx(1, "fork"); + if (!fg) + mydaemon(0, 0, pipefds); signal(SIGINT, sig_die); signal(SIGTERM, sig_die); diff --git a/utils/gssd/gssd.h b/utils/gssd/gssd.h index e44ea40..56a18d6 100644 --- a/utils/gssd/gssd.h +++ b/utils/gssd/gssd.h @@ -67,6 +67,7 @@ extern int use_memcache; extern int root_uses_machine_creds; extern unsigned int context_timeout; extern char *preferred_realm; +extern int pipefds[2]; TAILQ_HEAD(clnt_list_head, clnt_info) clnt_list; diff --git a/utils/gssd/gssd_main_loop.c b/utils/gssd/gssd_main_loop.c index ccf7fe5..9970028 100644 --- a/utils/gssd/gssd_main_loop.c +++ b/utils/gssd/gssd_main_loop.c @@ -53,6 +53,7 @@ #include "gssd.h" #include "err_util.h" +#include "nfslib.h" extern struct pollfd *pollarray; extern unsigned long pollsize; @@ -245,6 +246,9 @@ gssd_run() /* Error msg is already printed */ exit(1); } + + /* release the parent after the initial dir scan */ + release_parent(pipefds); } gssd_poll(pollarray, pollsize); } |