summaryrefslogtreecommitdiff
path: root/clientloop.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2013-06-10 13:07:11 +1000
committerDamien Miller <djm@mindrot.org>2013-06-10 13:07:11 +1000
commit36187093ea0b2d2240c043417b8949611687e105 (patch)
treee399ca31e1573856ddff2f8cdfb6ea051b57ed1d /clientloop.c
parentae133d4b31af05bb232d797419f498f3ae7e9f2d (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.c5
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;