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