diff options
author | Damien Miller <djm@mindrot.org> | 2013-06-10 13:07:11 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2013-06-10 13:07:11 +1000 |
commit | 36187093ea0b2d2240c043417b8949611687e105 (patch) | |
tree | e399ca31e1573856ddff2f8cdfb6ea051b57ed1d /clientloop.c | |
parent | ae133d4b31af05bb232d797419f498f3ae7e9f2d (diff) |
- dtucker@cvs.openbsd.org 2013/06/07 15:37:52
[channels.c channels.h clientloop.c]
Add an "ABANDONED" channel state and use for mux sessions that are
disconnected via the ~. escape sequence. Channels in this state will
be able to close if the server responds, but do not count as active channels.
This means that if you ~. all of the mux clients when using ControlPersist
on a broken network, the backgrounded mux master will exit when the
Control Persist time expires rather than hanging around indefinitely.
bz#1917, also reported and tested by tedu@. ok djm@ markus@.
Diffstat (limited to 'clientloop.c')
-rw-r--r-- | clientloop.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clientloop.c b/clientloop.c index 6a2963583..7c1f8abba 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: clientloop.c,v 1.252 2013/06/02 23:36:29 dtucker Exp $ */ | 1 | /* $OpenBSD: clientloop.c,v 1.253 2013/06/07 15:37:52 dtucker Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -1111,6 +1111,9 @@ process_escapes(Channel *c, Buffer *bin, Buffer *bout, Buffer *berr, | |||
1111 | chan_write_failed(c); | 1111 | chan_write_failed(c); |
1112 | if (c->detach_user) | 1112 | if (c->detach_user) |
1113 | c->detach_user(c->self, NULL); | 1113 | c->detach_user(c->self, NULL); |
1114 | c->type = SSH_CHANNEL_ABANDONED; | ||
1115 | buffer_clear(&c->input); | ||
1116 | chan_ibuf_empty(c); | ||
1114 | return 0; | 1117 | return 0; |
1115 | } else | 1118 | } else |
1116 | quit_pending = 1; | 1119 | quit_pending = 1; |