comparison cli-chansession.c @ 1649:4b01f4826a29

Fix regression where TTY modes weren't reset for client
author Matt Johnston <matt@ucc.asn.au>
date Sun, 24 Mar 2019 20:41:02 +0800
parents 79eef94ccea9
children a7cc3332d8ab
comparison
equal deleted inserted replaced
1648:48c6e54f7281 1649:4b01f4826a29
33 #include "runopts.h" 33 #include "runopts.h"
34 #include "termcodes.h" 34 #include "termcodes.h"
35 #include "chansession.h" 35 #include "chansession.h"
36 #include "agentfwd.h" 36 #include "agentfwd.h"
37 37
38 static void cli_cleanupchansess(const struct Channel *channel); 38 static void cli_closechansess(const struct Channel *channel);
39 static int cli_initchansess(struct Channel *channel); 39 static int cli_initchansess(struct Channel *channel);
40 static void cli_chansessreq(struct Channel *channel); 40 static void cli_chansessreq(struct Channel *channel);
41 static void send_chansess_pty_req(const struct Channel *channel); 41 static void send_chansess_pty_req(const struct Channel *channel);
42 static void send_chansess_shell_req(const struct Channel *channel); 42 static void send_chansess_shell_req(const struct Channel *channel);
43 static void cli_escape_handler(const struct Channel *channel, const unsigned char* buf, int *len); 43 static void cli_escape_handler(const struct Channel *channel, const unsigned char* buf, int *len);
49 0, /* sepfds */ 49 0, /* sepfds */
50 "session", /* name */ 50 "session", /* name */
51 cli_initchansess, /* inithandler */ 51 cli_initchansess, /* inithandler */
52 NULL, /* checkclosehandler */ 52 NULL, /* checkclosehandler */
53 cli_chansessreq, /* reqhandler */ 53 cli_chansessreq, /* reqhandler */
54 NULL, /* closehandler */ 54 cli_closechansess, /* closehandler */
55 cli_cleanupchansess, /* cleanup */ 55 NULL, /* cleanup */
56 }; 56 };
57 57
58 static void cli_chansessreq(struct Channel *channel) { 58 static void cli_chansessreq(struct Channel *channel) {
59 59
60 char* type = NULL; 60 char* type = NULL;
82 m_free(type); 82 m_free(type);
83 } 83 }
84 84
85 85
86 /* If the main session goes, we close it up */ 86 /* If the main session goes, we close it up */
87 static void cli_cleanupchansess(const struct Channel *UNUSED(channel)) { 87 static void cli_closechansess(const struct Channel *UNUSED(channel)) {
88 cli_tty_cleanup(); /* Restore tty modes etc */ 88 cli_tty_cleanup(); /* Restore tty modes etc */
89 89
90 /* This channel hasn't gone yet, so we have > 1 */ 90 /* This channel hasn't gone yet, so we have > 1 */
91 if (ses.chancount > 1) { 91 if (ses.chancount > 1) {
92 dropbear_log(LOG_INFO, "Waiting for other channels to close..."); 92 dropbear_log(LOG_INFO, "Waiting for other channels to close...");
386 0, /* sepfds */ 386 0, /* sepfds */
387 "direct-tcpip", 387 "direct-tcpip",
388 cli_init_netcat, /* inithandler */ 388 cli_init_netcat, /* inithandler */
389 NULL, 389 NULL,
390 NULL, 390 NULL,
391 cli_closechansess,
391 NULL, 392 NULL,
392 cli_cleanupchansess
393 }; 393 };
394 394
395 void cli_send_netcat_request() { 395 void cli_send_netcat_request() {
396 396
397 const char* source_host = "127.0.0.1"; 397 const char* source_host = "127.0.0.1";