AmendHub

jcs

/

subtext

/

amendments

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 over 2 years 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 over 2 years 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 over 2 years 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 over 2 years ago

serial: Fix sscanf parameter

jcs made amendment 151 over 2 years 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
connections.
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 over 2 years ago

logger: Include seconds in timestamps

jcs made amendment 149 over 2 years ago

main: SelectWindow before dragging it

jcs made amendment 148 over 2 years 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 over 2 years ago

session: Do session close log from each node type

jcs made amendment 143 over 2 years ago

Amendments on June 13, 2022

session: Remove session_output_string, enforce login timeout

jcs made amendment 142 over 2 years ago

tcp: Move TCPResolveName to dnr, put SOCKS code behind an ifdef

jcs made amendment 141 over 2 years ago

db: Add max_login_seconds to be shorter than max_idle_minutes

jcs made amendment 140 over 2 years ago

Amendments on June 12, 2022

session: Cleanup after banned username login

jcs made amendment 138 over 2 years ago

session: Close on banned username login attempt, track logged-in status

Ignore sessions that haven't logged in yet, and don't show guest
username in 'who' and logs.
Also show whether a user is a sysop in 'who'.
jcs made amendment 137 over 2 years ago