1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00
putty-source/test
Simon Tatham bc91a39670 Proper buffer management between terminal and backend.
The return value of term_data() is used as the return value from the
GUI-terminal versions of the Seat output method, which means backends
will take it to be the amount of standard-output data currently
buffered, and exert back-pressure on the remote peer if it gets too
big (e.g. by ceasing to extend the window in that particular SSH-2
channel).

Historically, as a comment in term_data() explained, we always just
returned 0 from that function, on the basis that we were processing
all the terminal data through our terminal emulation code immediately,
and never retained any of it in the buffer at all. If the terminal
emulation code were to start running slowly, then it would slow down
the _whole_ PuTTY system, due to single-threadedness, and
back-pressure of a sort would be exerted on the remote by it simply
failing to get round to reading from the network socket. But by the
time we got back to the top level of term_data(), we'd have finished
reading all the data we had, so it was still appropriate to return 0.

That comment is still correct if you're thinking about the limiting
factor on terminal data processing being the CPU usage in term_out().
But now that's no longer the whole story, because sometimes we leave
data in term->inbuf without having processed it: during drag-selects
in the terminal window, and (just introduced) while waiting for the
response to a pending window resize request. For both those reasons,
we _don't_ always have a buffer size of zero when we return from
term_data().

So now that hole in our buffer size management is filled in:
term_data() returns the true size of the remaining unprocessed
terminal output, so that back-pressure will be exerted if the terminal
is currently not consuming it. And when processing resumes and we
start to clear our backlog, we call backend_unthrottle to let the
backend know it can relax the back-pressure if necessary.
2021-12-19 11:02:48 +00:00
..
sclog sclog: wrap memmove. 2021-08-27 18:04:49 +01:00
agentmulti.py Add test script for simultaneous agent connections. 2021-05-24 15:27:38 +01:00
agenttest.py Migrate all Python scripts to Python 3. 2020-03-04 21:23:49 +00:00
agenttestdata.py New test script 'agenttest.py' for testing Pageant. 2020-01-09 19:57:35 +00:00
agenttestgen.py RSA generation: option to generate strong primes. 2020-03-07 11:37:31 +00:00
colours.txt Rename the 'testdata' subdirectory to 'test'. 2019-01-03 16:56:02 +00:00
cryptsuite.py Withdraw support for SHA-512-256 in HTTP Digest. 2021-11-27 11:41:00 +00:00
desref.py Migrate all Python scripts to Python 3. 2020-03-04 21:23:49 +00:00
display.txt Add SGR 9 strikethrough to test file. 2020-08-13 23:54:58 +01:00
eccref.py Migrate all Python scripts to Python 3. 2020-03-04 21:23:49 +00:00
fuzzterm.c Proper buffer management between terminal and backend. 2021-12-19 11:02:48 +00:00
lattrs.txt Rename the 'testdata' subdirectory to 'test'. 2019-01-03 16:56:02 +00:00
list-accel.py New test tool: list-accel.py. 2021-05-09 09:06:12 +01:00
mpu-check.pl Generate MPU certificates for proven primes. 2020-03-07 11:24:12 +00:00
numbertheory.py test/numbertheory.py: fix comment wording. 2020-05-03 11:18:50 +01:00
primegen.py primegen.py: add a --probabilistic option. 2021-08-28 10:17:16 +01:00
scocols.txt Rename the 'testdata' subdirectory to 'test'. 2019-01-03 16:56:02 +00:00
ssh.py Add test script for simultaneous agent connections. 2021-05-24 15:27:38 +01:00
testcrypt-enum.h Withdraw support for SHA-512-256 in HTTP Digest. 2021-11-27 11:41:00 +00:00
testcrypt-func.h Stop using short exponents for Diffie-Hellman. 2021-11-28 12:19:34 +00:00
testcrypt.c testcrypt-funcs.h: remove extra parens round argument lists. 2021-11-28 09:56:11 +00:00
testcrypt.py testcrypt-funcs.h: remove extra parens round argument lists. 2021-11-28 09:56:11 +00:00
testsc.c Move some tests into the test subdirectory. 2021-11-22 19:11:53 +00:00
testzlib.c Move some tests into the test subdirectory. 2021-11-22 19:11:53 +00:00
utf8.txt Rename the 'testdata' subdirectory to 'test'. 2019-01-03 16:56:02 +00:00
vt100.txt Rename the 'testdata' subdirectory to 'test'. 2019-01-03 16:56:02 +00:00
windowchange.py Test program for ancillary window updates. 2021-02-07 19:59:21 +00:00