- (djm) Ignore SIGPIPEs from serverloop to child. Fixes crashes with
   very short lived X connections. Bug report from Tobias Oetiker
   <oetiker@ee.ethz.ch>. Fix from Markus Friedl <markus@cvs.openbsd.org>
diff --git a/ChangeLog b/ChangeLog
index 36d0116..50f9592 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
  - (djm) Support in bsd-snprintf.c for long long conversions from 
    Ben Lindstrom <mouring@pconline.com>
  - (djm) Cleanup NeXT support from Ben Lindstrom <mouring@pconline.com>
+ - (djm) Ignore SIGPIPEs from serverloop to child. Fixes crashes with
+   very short lived X connections. Bug report from Tobias Oetiker 
+   <oetiker@ee.ethz.ch>. Fix from Markus Friedl <markus@cvs.openbsd.org>
 
 20000929
  - (djm) Fix SSH2 not terminating until all background tasks done problem.
diff --git a/serverloop.c b/serverloop.c
index 50e89ae..8ee93b3 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -417,6 +417,7 @@
 	child_terminated = 0;
 	child_has_selected = 0;
 	signal(SIGCHLD, sigchld_handler);
+	signal(SIGPIPE, SIG_IGN);
 
 	/* Initialize our global variables. */
 	fdin = fdin_arg;
@@ -650,6 +651,7 @@
 	debug("Entering interactive session for SSH2.");
 
 	signal(SIGCHLD, sigchld_handler2);
+	signal(SIGPIPE, SIG_IGN);
 	child_terminated = 0;
 	connection_in = packet_get_connection_in();
 	connection_out = packet_get_connection_out();
diff --git a/session.c b/session.c
index f5bbf19..d0172a3 100644
--- a/session.c
+++ b/session.c
@@ -477,6 +477,8 @@
 	if (s == NULL)
 		fatal("do_exec_no_pty: no session");
 
+	signal(SIGPIPE, SIG_DFL);
+
 	session_proctitle(s);
 
 #ifdef USE_PAM