diff options
author | 2005-10-10 10:23:08 +0000 | |
---|---|---|
committer | 2005-10-10 10:23:08 +0000 | |
commit | b693d36b7a63cfe301404fbcee25b72d5f2d5b41 (patch) | |
tree | e464ec369c434315dfd4f5159e67a23b6d27977c /usr.bin/ssh/channels.c | |
parent | Reflect reality. Xr package 5, and remove all the text that used to apply (diff) | |
download | wireguard-openbsd-b693d36b7a63cfe301404fbcee25b72d5f2d5b41.tar.xz wireguard-openbsd-b693d36b7a63cfe301404fbcee25b72d5f2d5b41.zip |
fix regression I introduced in 4.2: X11 forwardings initiated after
a session has exited (e.g. "(sleep 5; xterm) &") would not start.
bz #1086 reported by t8m AT centrum.cz; ok markus@ dtucker@
Diffstat (limited to 'usr.bin/ssh/channels.c')
-rw-r--r-- | usr.bin/ssh/channels.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.bin/ssh/channels.c b/usr.bin/ssh/channels.c index fea40009a48..2e40907d9e3 100644 --- a/usr.bin/ssh/channels.c +++ b/usr.bin/ssh/channels.c @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.224 2005/09/07 08:53:53 markus Exp $"); +RCSID("$OpenBSD: channels.c,v 1.225 2005/10/10 10:23:08 djm Exp $"); #include "ssh.h" #include "ssh1.h" @@ -268,6 +268,7 @@ channel_new(char *ctype, int type, int rfd, int wfd, int efd, c->force_drain = 0; c->single_connection = 0; c->detach_user = NULL; + c->detach_close = 0; c->confirm = NULL; c->confirm_ctx = NULL; c->input_filter = NULL; @@ -627,7 +628,7 @@ channel_register_confirm(int id, channel_callback_fn *fn, void *ctx) c->confirm_ctx = ctx; } void -channel_register_cleanup(int id, channel_callback_fn *fn) +channel_register_cleanup(int id, channel_callback_fn *fn, int do_close) { Channel *c = channel_lookup(id); @@ -636,6 +637,7 @@ channel_register_cleanup(int id, channel_callback_fn *fn) return; } c->detach_user = fn; + c->detach_close = do_close; } void channel_cancel_cleanup(int id) @@ -647,6 +649,7 @@ channel_cancel_cleanup(int id) return; } c->detach_user = NULL; + c->detach_close = 0; } void channel_register_filter(int id, channel_filter_fn *fn) @@ -1660,7 +1663,7 @@ channel_garbage_collect(Channel *c) if (c == NULL) return; if (c->detach_user != NULL) { - if (!chan_is_dead(c, 0)) + if (!chan_is_dead(c, c->detach_close)) return; debug2("channel %d: gc: notify user", c->self); c->detach_user(c->self, NULL); |