Bugzilla – Attachment 1709 Details for
Bug 1424
Cannot signal a process over a channel (rfc 4254, section 6.9)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
control command for sending signals
openssh-cmd-kill-0.patch (text/plain), 3.36 KB, created by
Salvador Fandiño
on 2009-10-26 17:47:34 AEDT
(
hide
)
Description:
control command for sending signals
Filename:
MIME Type:
Creator:
Salvador Fandiño
Created:
2009-10-26 17:47:34 AEDT
Size:
3.36 KB
patch
obsolete
>diff --git a/clientloop.h b/clientloop.h >index c961abd..5142320 100644 >--- a/clientloop.h >+++ b/clientloop.h >@@ -63,6 +63,7 @@ void client_register_global_confirm(global_confirm_cb *, void *); > #define SSHMUX_COMMAND_ALIVE_CHECK 2 /* Check master is alive */ > #define SSHMUX_COMMAND_TERMINATE 3 /* Ask master to exit */ > #define SSHMUX_COMMAND_PS 4 /* Get list of slaves */ >+#define SSHMUX_COMMAND_KILL 5 /* Send signal to remote process */ > > #define SSHMUX_FLAG_TTY (1) /* Request tty on open */ > #define SSHMUX_FLAG_SUBSYS (1<<1) /* Subsystem request on open */ >diff --git a/mux.c b/mux.c >index e78c88e..c727e38 100644 >--- a/mux.c >+++ b/mux.c >@@ -67,6 +67,7 @@ > #include "sshpty.h" > #include "key.h" > #include "readconf.h" >+#include "compat.h" > #include "clientloop.h" > > /* from ssh.c */ >@@ -212,7 +213,7 @@ muxserver_accept_control(void) > socklen_t addrlen; > struct sockaddr_storage addr; > struct mux_session_confirm_ctx *cctx; >- char *cmd, *tag; >+ char *cmd, *tag, *signal; > u_int i, j, len, env_len, mux_command, flags, escape_char; > uid_t euid; > gid_t egid; >@@ -278,6 +279,25 @@ muxserver_accept_control(void) > allowed = ask_permission("Terminate shared connection " > "to %s? ", host); > break; >+ case SSHMUX_COMMAND_KILL: >+ signal = buffer_get_string(&m, &len); >+ tag = buffer_get_string(&m, &len); >+ c = NULL; >+ if (tag && signal && compat20) { >+ /* channel lookup by tag */ >+ while (c = channel_next(c)) >+ if (c->tag && (strcmp(tag, c->tag) == 0)) >+ break; >+ } >+ if (c) { >+ if (ask) >+ allowed = ask_permission("Send signal %s to " >+ "session %s in %s? ", >+ signal, tag, host); >+ } else { >+ allowed = 0; >+ } >+ break; > } > > /* Build response */ >@@ -305,6 +325,14 @@ muxserver_accept_control(void) > if (c->tag) > buffer_put_cstring(&m, c->tag); > break; >+ case SSHMUX_COMMAND_KILL: >+ if (allowed) { >+ int id = c->self; >+ channel_request_start(id, "signal", 0); >+ packet_put_cstring(signal); >+ packet_send(); >+ } >+ break; > default: > error("Unsupported command %d", mux_command); > goto cleanup; >@@ -513,6 +541,10 @@ muxclient(const char *path, int ac, char **av) > muxclient_command = SSHMUX_COMMAND_OPEN; > case SSHMUX_COMMAND_OPEN: > break; >+ case SSHMUX_COMMAND_KILL: >+ if (ac != 2) >+ fatal("Bad number of arguments for control command kill"); >+ break; > default: > if (ac != 0) > fatal("Bad number of arguments for control command"); >@@ -587,6 +619,10 @@ muxclient(const char *path, int ac, char **av) > > /* Add command specific data */ > switch (muxclient_command) { >+ case SSHMUX_COMMAND_KILL: >+ buffer_put_cstring(&m, av[0]); >+ buffer_put_cstring(&m, av[1]); >+ break; > default: > break; > } >@@ -649,6 +685,9 @@ muxclient(const char *path, int ac, char **av) > xfree(tag); > } > exit(0); >+ case SSHMUX_COMMAND_KILL: >+ fprintf(stderr, "Signal request sent.\r\n"); >+ exit(0); > case SSHMUX_COMMAND_OPEN: > buffer_clear(&m); > buffer_put_cstring(&m, term ? term : ""); >diff --git a/ssh.c b/ssh.c >index 6c8c47c..636fda9 100644 >--- a/ssh.c >+++ b/ssh.c >@@ -307,6 +307,8 @@ main(int ac, char **av) > muxclient_command = SSHMUX_COMMAND_TERMINATE; > else if (strcmp(optarg, "ps") == 0) > muxclient_command = SSHMUX_COMMAND_PS; >+ else if (strcmp(optarg, "kill") == 0) >+ muxclient_command = SSHMUX_COMMAND_KILL; > else > fatal("Invalid multiplex command."); > break;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1424
:
1432
|
1438
|
1699
|
1700
| 1709 |
2500
|
3120