summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.bin/ssh/clientloop.c26
-rw-r--r--usr.bin/ssh/sshtty.c12
-rw-r--r--usr.bin/ssh/sshtty.h3
3 files changed, 19 insertions, 22 deletions
diff --git a/usr.bin/ssh/clientloop.c b/usr.bin/ssh/clientloop.c
index d8def78bda7..bc50f0bca99 100644
--- a/usr.bin/ssh/clientloop.c
+++ b/usr.bin/ssh/clientloop.c
@@ -59,7 +59,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: clientloop.c,v 1.112 2003/06/28 16:23:06 deraadt Exp $");
+RCSID("$OpenBSD: clientloop.c,v 1.113 2003/09/19 17:43:35 markus Exp $");
#include "ssh.h"
#include "ssh1.h"
@@ -139,7 +139,6 @@ leave_non_blocking(void)
if (in_non_blocking_mode) {
(void) fcntl(fileno(stdin), F_SETFL, 0);
in_non_blocking_mode = 0;
- fatal_remove_cleanup((void (*) (void *)) leave_non_blocking, NULL);
}
}
@@ -150,7 +149,6 @@ enter_non_blocking(void)
{
in_non_blocking_mode = 1;
(void) fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
- fatal_add_cleanup((void (*) (void *)) leave_non_blocking, NULL);
}
/*
@@ -844,8 +842,7 @@ client_channel_closed(int id, void *arg)
id, session_ident);
channel_cancel_cleanup(id);
session_closed = 1;
- if (in_raw_mode())
- leave_raw_mode();
+ leave_raw_mode();
}
/*
@@ -1034,11 +1031,8 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
if (!isatty(fileno(stderr)))
unset_nonblock(fileno(stderr));
- if (received_signal) {
- if (in_non_blocking_mode) /* XXX */
- leave_non_blocking();
+ if (received_signal)
fatal("Killed by signal %d.", (int) received_signal);
- }
/*
* In interactive mode (with pseudo tty) display a message indicating
@@ -1387,3 +1381,17 @@ client_init_dispatch(void)
else
client_init_dispatch_15();
}
+
+/* client specific fatal cleanup */
+void
+fatal(const char *fmt,...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ do_log(SYSLOG_LEVEL_FATAL, fmt, args);
+ va_end(args);
+ leave_raw_mode();
+ leave_non_blocking();
+ _exit(255);
+}
diff --git a/usr.bin/ssh/sshtty.c b/usr.bin/ssh/sshtty.c
index 2f47b06d12e..4fb2d3dae8e 100644
--- a/usr.bin/ssh/sshtty.c
+++ b/usr.bin/ssh/sshtty.c
@@ -35,7 +35,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: sshtty.c,v 1.4 2003/07/16 10:36:28 markus Exp $");
+RCSID("$OpenBSD: sshtty.c,v 1.5 2003/09/19 17:43:35 markus Exp $");
#include "sshtty.h"
#include "log.h"
@@ -43,12 +43,6 @@ RCSID("$OpenBSD: sshtty.c,v 1.4 2003/07/16 10:36:28 markus Exp $");
static struct termios _saved_tio;
static int _in_raw_mode = 0;
-int
-in_raw_mode(void)
-{
- return _in_raw_mode;
-}
-
struct termios
get_saved_tio(void)
{
@@ -64,8 +58,6 @@ leave_raw_mode(void)
perror("tcsetattr");
else
_in_raw_mode = 0;
-
- fatal_remove_cleanup((void (*) (void *)) leave_raw_mode, NULL);
}
void
@@ -94,6 +86,4 @@ enter_raw_mode(void)
perror("tcsetattr");
else
_in_raw_mode = 1;
-
- fatal_add_cleanup((void (*) (void *)) leave_raw_mode, NULL);
}
diff --git a/usr.bin/ssh/sshtty.h b/usr.bin/ssh/sshtty.h
index 7ba4a262727..723b2784637 100644
--- a/usr.bin/ssh/sshtty.h
+++ b/usr.bin/ssh/sshtty.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshtty.h,v 1.2 2001/06/26 17:27:25 markus Exp $ */
+/* $OpenBSD: sshtty.h,v 1.3 2003/09/19 17:43:35 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -40,7 +40,6 @@
#include <termios.h>
-int in_raw_mode(void);
struct termios get_saved_tio(void);
void leave_raw_mode(void);
void enter_raw_mode(void);