mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-23 16:43:11 +01:00
Sync OpenBSD patchset 626:
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
3116e3ce21
commit
495a3056e9
29
cmd-list.c
29
cmd-list.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd-list.c,v 1.6 2009-07-28 22:12:16 tcunha Exp $ */
|
/* $Id: cmd-list.c,v 1.7 2010-02-02 23:51:04 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -77,13 +77,32 @@ int
|
|||||||
cmd_list_exec(struct cmd_list *cmdlist, struct cmd_ctx *ctx)
|
cmd_list_exec(struct cmd_list *cmdlist, struct cmd_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct cmd *cmd;
|
struct cmd *cmd;
|
||||||
int n;
|
int n, retval;
|
||||||
|
|
||||||
|
retval = 0;
|
||||||
TAILQ_FOREACH(cmd, cmdlist, qentry) {
|
TAILQ_FOREACH(cmd, cmdlist, qentry) {
|
||||||
if ((n = cmd_exec(cmd, ctx)) != 0)
|
if ((n = cmd_exec(cmd, ctx)) == -1)
|
||||||
return (n);
|
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
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user