|
Lines 1008-1013
Link Here
|
| 1008 |
{"B", "send a BREAK to the remote system", SUPPRESS_PROTO1}, |
1008 |
{"B", "send a BREAK to the remote system", SUPPRESS_PROTO1}, |
| 1009 |
{"C", "open a command line", SUPPRESS_MUXCLIENT}, |
1009 |
{"C", "open a command line", SUPPRESS_MUXCLIENT}, |
| 1010 |
{"R", "request rekey", SUPPRESS_PROTO1}, |
1010 |
{"R", "request rekey", SUPPRESS_PROTO1}, |
|
|
1011 |
{"S", "send signal to remote process", SUPPRESS_PROTO1}, |
| 1011 |
{"V/v", "decrease/increase verbosity (LogLevel)", SUPPRESS_MUXCLIENT}, |
1012 |
{"V/v", "decrease/increase verbosity (LogLevel)", SUPPRESS_MUXCLIENT}, |
| 1012 |
{"^Z", "suspend ssh", SUPPRESS_MUXCLIENT}, |
1013 |
{"^Z", "suspend ssh", SUPPRESS_MUXCLIENT}, |
| 1013 |
{"#", "list forwarded connections", SUPPRESS_NEVER}, |
1014 |
{"#", "list forwarded connections", SUPPRESS_NEVER}, |
|
Lines 1047-1052
Link Here
|
| 1047 |
buffer_append(b, string, strlen(string)); |
1048 |
buffer_append(b, string, strlen(string)); |
| 1048 |
} |
1049 |
} |
| 1049 |
|
1050 |
|
|
|
1051 |
static void |
| 1052 |
process_signal(void) |
| 1053 |
{ |
| 1054 |
void (*handler)(int); |
| 1055 |
char *sig; |
| 1056 |
|
| 1057 |
leave_raw_mode(options.request_tty == REQUEST_TTY_FORCE); |
| 1058 |
handler = signal(SIGINT, SIG_IGN); |
| 1059 |
sig = read_passphrase("SIG", RP_ECHO); |
| 1060 |
if (sig != NULL && *sig != '\0') { |
| 1061 |
debug("sending signal %s to session %d", sig, session_ident); |
| 1062 |
channel_request_start(session_ident, "signal", 0); |
| 1063 |
packet_put_cstring(sig); |
| 1064 |
packet_send(); |
| 1065 |
packet_write_wait(); |
| 1066 |
} |
| 1067 |
if (sig != NULL) |
| 1068 |
free(sig); |
| 1069 |
signal(SIGINT, handler); |
| 1070 |
enter_raw_mode(options.request_tty == REQUEST_TTY_FORCE); |
| 1071 |
} |
| 1072 |
|
| 1050 |
/* |
1073 |
/* |
| 1051 |
* Process the characters one by one, call with c==NULL for proto1 case. |
1074 |
* Process the characters one by one, call with c==NULL for proto1 case. |
| 1052 |
*/ |
1075 |
*/ |
|
Lines 1248-1253
Link Here
|
| 1248 |
s = channel_open_message(); |
1271 |
s = channel_open_message(); |
| 1249 |
buffer_append(berr, s, strlen(s)); |
1272 |
buffer_append(berr, s, strlen(s)); |
| 1250 |
free(s); |
1273 |
free(s); |
|
|
1274 |
continue; |
| 1275 |
|
| 1276 |
case 'S': |
| 1277 |
if (compat20) |
| 1278 |
process_signal(); |
| 1251 |
continue; |
1279 |
continue; |
| 1252 |
|
1280 |
|
| 1253 |
case 'C': |
1281 |
case 'C': |