from forwarding data sources which will be good enough to last until
we close the socket, in the form of the override_throttle() functions.
So this finishes up the work in r9283, by manufacturing outgoing EOF
in response to incoming CLOSE on all channel types.
git-svn-id: svn://svn.tartarus.org/sgt/putty@9284
cda61777-01e9-0310-a592-
d414129be87e
* the remote side is doing away with the entire channel. (If it
* had wanted to send us EOF and continue receiving data from us,
* it would have just sent CHANNEL_EOF.)
* the remote side is doing away with the entire channel. (If it
* had wanted to send us EOF and continue receiving data from us,
* it would have just sent CHANNEL_EOF.)
- *
- * For the moment, this policy applies to the main session channel
- * only, because we have a convenient mechanism (ssh->send_ok) for
- * ceasing to read from our local data source. Ideally I think
- * we'd do this for auxiliary channels too, which would need an
- * extra API call in the forwarding modules.
- if (c->type == CHAN_MAINSESSION && !(c->closes & CLOSES_SENT_EOF)) {
+ if (!(c->closes & CLOSES_SENT_EOF)) {
+ /*
+ * Make sure we don't read any more from whatever our local
+ * data source is for this channel.
+ */
+ switch (c->type) {
+ case CHAN_MAINSESSION:
+ ssh->send_ok = 0; /* stop trying to read from stdin */
+ break;
+ case CHAN_X11:
+ x11_override_throttle(c->u.x11.s, 1);
+ break;
+ case CHAN_SOCKDATA:
+ pfd_override_throttle(c->u.pfd.s, 1);
+ break;
+ }
+
+ /*
+ * Send outgoing EOF.
+ */
sshfwd_write_eof(ssh->mainchan);
sshfwd_write_eof(ssh->mainchan);
- ssh->send_ok = 0; /* now stop trying to read from stdin */