CVSROOT:        /cvs/cluster
Module name:    cluster
Branch:         RHEL5
Changes by:     [EMAIL PROTECTED]       2008-01-24 17:00:55

Modified files:
        cman/qdisk     : score.c 

Log message:
        Unblock signals after fork() so heuristics using signals don't hang

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/qdisk/score.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.4.3&r2=1.2.4.4

--- cluster/cman/qdisk/score.c  2007/03/20 19:37:04     1.2.4.3
+++ cluster/cman/qdisk/score.c  2008/01/24 17:00:50     1.2.4.4
@@ -75,6 +75,24 @@
 
 
 /**
+  Set all signal handlers to default for exec of a script.
+  ONLY do this after a fork().
+ */
+void
+restore_signals(void)
+{
+       sigset_t set;
+       int x;
+
+       for (x = 1; x < _NSIG; x++)
+               signal(x, SIG_DFL);
+
+       sigfillset(&set);
+       sigprocmask(SIG_UNBLOCK, &set, NULL);
+}
+
+
+/**
   Spin off a user-defined heuristic
  */
 static int
@@ -117,6 +135,7 @@
         */
        set_priority(SCHED_OTHER, -1);
        munlockall();
+       restore_signals();
 
        argv[0] = "/bin/sh";
        argv[1] = "-c";

Reply via email to