Amendments on June 21, 2022

telnet: Don't abort TCP connection while there is an active session

telnet_idle is called outside of a uthread so just set session ending
and let it tear itself down once that thread is scheduled again
jcs made amendment 156 7 months ago

Amendments on June 17, 2022

session: Don't run all session_printf formats through expand_template

session_expand_template is only needed for actual template views and
is pretty expensive. We only really need support for bolding and
resetting in session_printf.
This had the side effect of converting all bare \r's in session_printf
to \r\n, which screwed up ANSI output that was trying to just jump
back to the beginning of the line, like chat output.
jcs made amendment 155 7 months ago

db: Set default max_login_seconds to 90

This timer doesn't reset on input, so this has to cover the entire
login process.
jcs made amendment 153 7 months ago

telnet: Fast-track single-byte writes, spin a bit after sending

If our send succeeds and returns quickly, we can avoid having to
return and wait for uthread to cycle back to us. Since sends can take
a very long time, we can't simply switch to synchronous TCPSend calls
or we'll hang forever on a dead connection.
We can also avoid zeroing the full tcp_wds structure each time, since
it is zeroed at the node allocation and we only need to zero wds[1]
ptr and length.
jcs made amendment 152 7 months ago

serial: Fix sscanf parameter

jcs made amendment 151 7 months ago

Amendments on June 16, 2022

telnet: Make listening more resilient, add IP banning

MacTCP doesn't make it easy to detect when a listening socket has a
valid connection, or when it doesn't. Sometimes the connection is
accepted but then closed, sometimes TCPStatus returns a
connectionDoesntExist error, sometimes an open connection lingers in
TCP Wait. All of these were contributing to us no longer opening a
listening socket after some period of time accepting and closing
When bots try to login with a banned username, add their IP to a
ring buffer of IPs that we won't service. Unfortunately there is no
way to actually block these connections before they are accepted, so
we have to accept them, check the IP, and then close them right away.
jcs made amendment 150 7 months ago

logger: Include seconds in timestamps

jcs made amendment 149 7 months ago

main: SelectWindow before dragging it

jcs made amendment 148 7 months ago

Amendments on June 15, 2022

telnet: Use TCPNoCopyRcv instead of TCPRcv

Avoid copying input data to an intermediate node buffer, just to then
process it and copy it to the session buffer.
Doesn't seem to make things any faster, but might as well do it
jcs made amendment 144 7 months ago

session: Do session close log from each node type

jcs made amendment 143 7 months ago

Amendments on June 13, 2022