mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-23 14:05:03 -05:00

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.
This is the README for PuTTY, a free Windows and Unix Telnet and SSH client. PuTTY is built using CMake <https://cmake.org/>. To compile in the simplest way (on any of Linux, Windows or Mac), run these commands in the source directory: cmake . cmake --build . Then, to install in the simplest way on Linux or Mac: cmake --build . --target install On Unix, pterm would like to be setuid or setgid, as appropriate, to permit it to write records of user logins to /var/run/utmp and /var/log/wtmp. (Of course it will not use this privilege for anything else, and in particular it will drop all privileges before starting up complex subsystems like GTK.) The cmake install step doesn't attempt to add these privileges, so if you want user login recording to work, you should manually ch{own,grp} and chmod the pterm binary yourself after installation. If you don't do this, pterm will still work, but not update the user login databases. Documentation (in various formats including Windows Help and Unix `man' pages) is built from the Halibut (`.but') files in the `doc' subdirectory using `doc/Makefile'. If you aren't using one of our source snapshots, you'll need to do this yourself. Halibut can be found at <https://www.chiark.greenend.org.uk/~sgtatham/halibut/>. The PuTTY home web site is https://www.chiark.greenend.org.uk/~sgtatham/putty/ If you want to send bug reports or feature requests, please read the Feedback section of the web site before doing so. Sending one-line reports saying `it doesn't work' will waste your time as much as ours. See the file LICENCE for the licence conditions.
Description
Languages
C
89.7%
Python
8%
Perl
0.9%
CMake
0.8%
Shell
0.4%
Other
0.1%