diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | serverloop.c | 2 | ||||
-rw-r--r-- | session.c | 2 |
3 files changed, 7 insertions, 0 deletions
@@ -3,6 +3,9 @@ | |||
3 | - (djm) Support in bsd-snprintf.c for long long conversions from | 3 | - (djm) Support in bsd-snprintf.c for long long conversions from |
4 | Ben Lindstrom <mouring@pconline.com> | 4 | Ben Lindstrom <mouring@pconline.com> |
5 | - (djm) Cleanup NeXT support from Ben Lindstrom <mouring@pconline.com> | 5 | - (djm) Cleanup NeXT support from Ben Lindstrom <mouring@pconline.com> |
6 | - (djm) Ignore SIGPIPEs from serverloop to child. Fixes crashes with | ||
7 | very short lived X connections. Bug report from Tobias Oetiker | ||
8 | <oetiker@ee.ethz.ch>. Fix from Markus Friedl <markus@cvs.openbsd.org> | ||
6 | 9 | ||
7 | 20000929 | 10 | 20000929 |
8 | - (djm) Fix SSH2 not terminating until all background tasks done problem. | 11 | - (djm) Fix SSH2 not terminating until all background tasks done problem. |
diff --git a/serverloop.c b/serverloop.c index 50e89aee8..8ee93b3b1 100644 --- a/serverloop.c +++ b/serverloop.c | |||
@@ -417,6 +417,7 @@ server_loop(pid_t pid, int fdin_arg, int fdout_arg, int fderr_arg) | |||
417 | child_terminated = 0; | 417 | child_terminated = 0; |
418 | child_has_selected = 0; | 418 | child_has_selected = 0; |
419 | signal(SIGCHLD, sigchld_handler); | 419 | signal(SIGCHLD, sigchld_handler); |
420 | signal(SIGPIPE, SIG_IGN); | ||
420 | 421 | ||
421 | /* Initialize our global variables. */ | 422 | /* Initialize our global variables. */ |
422 | fdin = fdin_arg; | 423 | fdin = fdin_arg; |
@@ -650,6 +651,7 @@ server_loop2(void) | |||
650 | debug("Entering interactive session for SSH2."); | 651 | debug("Entering interactive session for SSH2."); |
651 | 652 | ||
652 | signal(SIGCHLD, sigchld_handler2); | 653 | signal(SIGCHLD, sigchld_handler2); |
654 | signal(SIGPIPE, SIG_IGN); | ||
653 | child_terminated = 0; | 655 | child_terminated = 0; |
654 | connection_in = packet_get_connection_in(); | 656 | connection_in = packet_get_connection_in(); |
655 | connection_out = packet_get_connection_out(); | 657 | connection_out = packet_get_connection_out(); |
@@ -477,6 +477,8 @@ do_exec_no_pty(Session *s, const char *command, struct passwd * pw) | |||
477 | if (s == NULL) | 477 | if (s == NULL) |
478 | fatal("do_exec_no_pty: no session"); | 478 | fatal("do_exec_no_pty: no session"); |
479 | 479 | ||
480 | signal(SIGPIPE, SIG_DFL); | ||
481 | |||
480 | session_proctitle(s); | 482 | session_proctitle(s); |
481 | 483 | ||
482 | #ifdef USE_PAM | 484 | #ifdef USE_PAM |