switch to raw mode only if he _get_ a pty (not if we _want_ a pty).
authormarkus <markus@openbsd.org>
Thu, 23 Mar 2000 21:52:02 +0000 (21:52 +0000)
committermarkus <markus@openbsd.org>
Thu, 23 Mar 2000 21:52:02 +0000 (21:52 +0000)
usr.bin/ssh/ssh.c

index b847e73..c5652ea 100644 (file)
@@ -11,7 +11,7 @@
  */
 
 #include "includes.h"
-RCSID("$Id: ssh.c,v 1.42 2000/03/22 09:55:10 markus Exp $");
+RCSID("$Id: ssh.c,v 1.43 2000/03/23 21:52:02 markus Exp $");
 
 #include "xmalloc.h"
 #include "ssh.h"
@@ -171,6 +171,7 @@ main(int ac, char **av)
        struct stat st;
        struct passwd *pw, pwcopy;
        int interactive = 0, dummy;
+       int have_pty = 0;
        uid_t original_effective_uid;
        int plen;
 
@@ -661,9 +662,10 @@ main(int ac, char **av)
 
                /* Read response from the server. */
                type = packet_read(&plen);
-               if (type == SSH_SMSG_SUCCESS)
+               if (type == SSH_SMSG_SUCCESS) {
                        interactive = 1;
-               else if (type == SSH_SMSG_FAILURE)
+                       have_pty = 1;
+               } else if (type == SSH_SMSG_FAILURE)
                        log("Warning: Remote host failed or refused to allocate a pseudo tty.");
                else
                        packet_disconnect("Protocol error waiting for pty request response.");
@@ -791,7 +793,7 @@ main(int ac, char **av)
        }
 
        /* Enter the interactive session. */
-       exit_status = client_loop(tty_flag, tty_flag ? options.escape_char : -1);
+       exit_status = client_loop(have_pty, tty_flag ? options.escape_char : -1);
 
        /* Close the connection to the remote host. */
        packet_close();