mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-25 08:09:24 +01:00
Don't stop parsing command sequences when a command requests the client to
stick around (attach-session/new-session).
This commit is contained in:
parent
65c9004550
commit
8a37a1cc2d
27
cmd-list.c
27
cmd-list.c
@ -77,13 +77,32 @@ int
|
||||
cmd_list_exec(struct cmd_list *cmdlist, struct cmd_ctx *ctx)
|
||||
{
|
||||
struct cmd *cmd;
|
||||
int n;
|
||||
int n, retval;
|
||||
|
||||
retval = 0;
|
||||
TAILQ_FOREACH(cmd, cmdlist, qentry) {
|
||||
if ((n = cmd_exec(cmd, ctx)) != 0)
|
||||
return (n);
|
||||
if ((n = cmd_exec(cmd, ctx)) == -1)
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
* A 1 return value means the command client is being attached
|
||||
* (sent MSG_READY).
|
||||
*/
|
||||
if (n == 1) {
|
||||
retval = 1;
|
||||
|
||||
/*
|
||||
* The command client has been attached, so mangle the
|
||||
* context to treat any following commands as if they
|
||||
* were called from inside.
|
||||
*/
|
||||
if (ctx->curclient == NULL) {
|
||||
ctx->curclient = ctx->cmdclient;
|
||||
ctx->cmdclient = NULL;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
return (retval);
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user