File rpc.gssd-catch-signal.patch of Package nfs-utils

Make sure signal used by 'dnotify' is not blocked.

Some desktop environments block all realtime signals
and they remain blocked for all child processes.
So if you run rpc.gssd from a terminal window, the
signal it used for dnotify is blocked and never
deliverred.  So it doesn't work.

So we unblock that signal.

bnc#406832

Signed-off-by: NeilBrown <neilb@suse.de>


Index: nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c
===================================================================
--- nfs-utils-1.1.3.orig/utils/gssd/gssd_main_loop.c
+++ nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c
@@ -99,6 +99,7 @@ gssd_run()
 	int			ret;
 	struct sigaction	dn_act;
 	int			fd;
+	sigset_t		set;
 
 	/* Taken from linux/Documentation/dnotify.txt: */
 	dn_act.sa_sigaction = dir_notify_handler;
@@ -106,6 +107,11 @@ gssd_run()
 	dn_act.sa_flags = SA_SIGINFO;
 	sigaction(DNOTIFY_SIGNAL, &dn_act, NULL);
 
+	/* just in case the signal is blocked... */
+	sigemptyset(&set);
+	sigaddset(&set, DNOTIFY_SIGNAL);
+	sigprocmask(SIG_UNBLOCK, &set, NULL);
+
 	if ((fd = open(pipefs_nfsdir, O_RDONLY)) == -1) {
 		printerr(0, "ERROR: failed to open %s: %s\n",
 			 pipefs_nfsdir, strerror(errno));
openSUSE Build Service is sponsored by