aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Eric Fagan <sef@FreeBSD.org>2019-02-21 01:30:37 +0000
committerSean Eric Fagan <sef@FreeBSD.org>2019-02-21 01:30:37 +0000
commitc6da8eb21f495264af40fc4cd4bb336be0efab13 (patch)
tree1e4afad613e00d4c7d212f52b30f27235112ca0e
parentcd6518c76586184e17864af336ff4145df9e4832 (diff)
Notes
-rw-r--r--sys/kgssapi/gss_impl.c9
-rw-r--r--usr.sbin/gssd/gssd.c1
2 files changed, 10 insertions, 0 deletions
diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c
index 8ed984484809..4359c9edc07b 100644
--- a/sys/kgssapi/gss_impl.c
+++ b/sys/kgssapi/gss_impl.c
@@ -112,6 +112,15 @@ sys_gssd_syscall(struct thread *td, struct gssd_syscall_args *uap)
cl = clnt_reconnect_create(nconf,
(struct sockaddr *) &sun, GSSD, GSSDVERS,
RPC_MAXDATASIZE, RPC_MAXDATASIZE);
+ /*
+ * The number of retries defaults to INT_MAX, which effectively
+ * means an infinite, uninterruptable loop. Limiting it to
+ * five retries keeps it from running forever.
+ */
+ if (cl != NULL) {
+ int retry_count = 5;
+ CLNT_CONTROL(cl, CLSET_RETRIES, &retry_count);
+ }
} else
cl = NULL;
diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c
index 488c7de0d581..92dd93db2751 100644
--- a/usr.sbin/gssd/gssd.c
+++ b/usr.sbin/gssd/gssd.c
@@ -202,6 +202,7 @@ main(int argc, char **argv)
signal(SIGHUP, SIG_IGN);
}
signal(SIGTERM, gssd_terminate);
+ signal(SIGPIPE, gssd_terminate);
memset(&sun, 0, sizeof sun);
sun.sun_family = AF_LOCAL;