mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-13 10:33:51 -05:00

In the Windows Pageant message loop, we were alternating between MsgWaitForMultipleObjects with timeout=INFINITE, and run_toplevel_callbacks. But run_toplevel_callbacks doesn't loop until the callback queue is empty: it just runs at least one of the currently queued callbacks, so that some progress was made. So if two or more callbacks were queued, we'd leave the rest in the queue and go back into MsgWaitForMultipleObjects, which could hang indefinitely. (A very silly workaround was available: move the mouse over the Pageant systray icon! Every mouse event would terminate the wait and let you get one more iteration of run_toplevel_callbacks.) Now we do the same thing as in other main loops: if any further callbacks are pending, then we still run MsgWaitForMultipleObjects, but we do it with timeout=0 instead of timeout=INFINITE, so that we won't go back to a _blocking_ sleep until all callbacks have been serviced.
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 . 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%