Don't block SIGPIPE until _after_ pterm forks, since otherwise the
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 25 Apr 2003 15:44:01 +0000 (15:44 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 25 Apr 2003 15:44:01 +0000 (15:44 +0000)
blockage will propagate to the child process.

git-svn-id: svn://svn.tartarus.org/sgt/putty@3139 cda61777-01e9-0310-a592-d414129be87e

unix/pterm.c

index 3bb9f6b..f1bdd4d 100644 (file)
@@ -2803,12 +2803,6 @@ int pt_main(int argc, char **argv)
      * it */
     block_signal(SIGCHLD, 1);
 
      * it */
     block_signal(SIGCHLD, 1);
 
-    /*
-     * SIGPIPE is not something we want to see terminating the
-     * process.
-     */
-    block_signal(SIGPIPE, 1);
-
     inst->progname = argv[0];
     /*
      * Copy the original argv before letting gtk_init fiddle with
     inst->progname = argv[0];
     /*
      * Copy the original argv before letting gtk_init fiddle with
@@ -3062,6 +3056,15 @@ int pt_main(int argc, char **argv)
      * called */
     block_signal(SIGCHLD, 0);
 
      * called */
     block_signal(SIGCHLD, 0);
 
+    /*
+     * Block SIGPIPE: if we attempt Duplicate Session or similar
+     * and it falls over in some way, we certainly don't want
+     * SIGPIPE terminating the main pterm/PuTTY. Note that we do
+     * this _after_ (at least pterm) forks off its child process,
+     * since the child wants SIGPIPE handled in the usual way.
+     */
+    block_signal(SIGPIPE, 1);
+
     inst->exited = FALSE;
 
     gtk_main();
     inst->exited = FALSE;
 
     gtk_main();