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
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
154
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.
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
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
149
over 2 years ago
jcs made amendment
148
over 2 years ago
jcs made amendment
147
over 2 years ago
jcs made amendment
146
over 2 years ago
jcs made amendment
145
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
143
over 2 years ago
Amendments on June 13, 2022
jcs made amendment
142
over 2 years ago
jcs made amendment
141
over 2 years ago
jcs made amendment
140
over 2 years ago
jcs made amendment
139
over 2 years ago
Amendments on June 12, 2022
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'.