simon-git: putty (pre-0.77): Simon Tatham

Commits to Tartarus hosted VCS tartarus-commits at lists.tartarus.org
Thu May 19 18:24:41 BST 2022


TL;DR:
  b8a51419 Move contents of win_seat_notify_remote_exit into a callback.

Repository:     https://git.tartarus.org/simon/putty.git
On the web:     https://git.tartarus.org/?p=simon/putty.git
Branch updated: pre-0.77
Committer:      Simon Tatham <anakin at pobox.com>
Date:           2022-05-19 18:24:41

commit b8a51419ef55eba354a49e05cd90d934b878bbaf
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=b8a51419ef55eba354a49e05cd90d934b878bbaf;hp=e45c6b76dad062e1e2c492524f2c05e27913b382
Author: Simon Tatham <anakin at pobox.com>
Date:   Thu May 19 17:44:39 2022 +0100

    Move contents of win_seat_notify_remote_exit into a callback.
    
    This matches the way it's done in the GTK backend: the only thing that
    happens inside seat_notify_remote_exit is that we schedule a toplevel
    callback, and all the real work happens later on when that callback is
    called.
    
    The particular situation where this makes a difference is if you
    perform a user abort during proxy authentication (e.g. hit ^D at a
    proxy password prompt), so that the main SSH backend gets
    PLUGCLOSE_USER_ABORT and calls ssh_user_close. That doesn't
    immediately close the socket; it just sets ssh->pending_close,
    schedules a run of ssh_bpp_output_raw_data_callback, and returns.
    
    So if seat_notify_remote_exit calls back _synchronously_ to
    ssh_return_exitcode, it will see that the socket is still open and
    return -1. But if it schedules a callback and waits, then the callback
    to ssh_bpp_output_raw_data_callback will happen first, which will
    close the socket, and then the exit processing will get the right
    answer.
    
    So the user-visible effect is that if you ^D a proxy auth prompt, GTK
    PuTTY will close the whole window (assuming you didn't set close-on-
    exit to 'never'), whereas Windows PuTTY will leave the window open,
    and not even know that the connection is now shut (in that it'll still
    ask 'Are you sure you want to close this session?' if you try to close
    it by hand).
    
    With this fix, Windows PuTTY behaves the same as GTK in this respect.

 windows/window.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)



More information about the tartarus-commits mailing list