Index: sys/kgssapi/gss_acquire_cred.c =================================================================== --- sys/kgssapi/gss_acquire_cred.c +++ sys/kgssapi/gss_acquire_cred.c @@ -66,6 +66,14 @@ if (cl == NULL) return (GSS_S_FAILURE); + /* + * 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. + */ + i = 5; + CLNT_CONTROL(cl, CLSET_RETRIES, &i); + args.uid = curthread->td_ucred->cr_uid; if (desired_name) args.desired_name = desired_name->handle; Index: usr.sbin/gssd/gssd.c =================================================================== --- usr.sbin/gssd/gssd.c +++ usr.sbin/gssd/gssd.c @@ -202,6 +202,7 @@ signal(SIGHUP, SIG_IGN); } signal(SIGTERM, gssd_terminate); + signal(SIGPIPE, gssd_terminate); memset(&sun, 0, sizeof sun); sun.sun_family = AF_LOCAL;