• exec/ircd.js

    From Deuce@454:1/1 to Cvs Commit on Sat May 28 10:16:00 2016
    exec ircd.js 1.169 1.170
    Update of /cvsroot/sbbs/exec
    In directory cvs:/tmp/cvs-serv15122

    Modified Files:
    ircd.js
    Log Message:
    Various fixups with an eye to reducing latency and fixing ping timeouts

    1) Don't use socket.recvline() on non-blocking sockets. Instead, have
    the recvq object parse lines and receive 64k at a time.
    2) Pass all received data through the recvq object rather than attempt
    to process one command per recv().
    3) Pass all data sent on established connections through the sendq
    object rather than only use it if send() fails.
    4) Move client throttling completely into ircd_user.js and out of
    the queue processing function so we don't accidentally throttle
    server connections.
    5) send() the entire sendq contents as a single send() rather than one
    line per main loop.
    6) Parse the entire recvq each time through the main loop. This
    requires tracking when an unregistered connection is replaced by
    either a client or a server connection.



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ telnet://vert.synchro.net
    þ wcQWK 7.0 ÷ ILink * Omicron Theta * Southaven MS * winserver.org

    --- QScan/PCB v1.20a / 01-0462
    * Origin: ILink: CFBBS | cfbbs.no-ip.com | 856-933-7096 (454:1/1)
  • From Deuce@454:1/1 to Cvs Commit on Sat May 28 10:16:00 2016
    exec ircd.js 1.170 1.171
    Update of /cvsroot/sbbs/exec
    In directory cvs:/tmp/cvs-serv3536

    Modified Files:
    ircd.js
    Log Message:
    Make the IRC_Queue recv (and the new send) method take a socket argument instead of a string argument. They perform the send/recv themselves using
    a buffer.

    This allows taking advantage of non-blocking sockets (in new Synchronet
    builds) to be much more responsive.

    This should still be compatible with the old socket.send implementation.
    The *first* send it does in blocking mode and detects if it's the new or
    old socket.send implementation and sets a global variable. Future sends
    know if it's the old or new API and treats them accordingly.

    This may make new ircd running on an old build slightly less responsive
    when a new user joins or when a new link is established since it blocks
    all other ircd activity until the entire send queue has been transmitted (or the connection is terminated).



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ telnet://vert.synchro.net
    þ wcQWK 7.0 ÷ ILink * Omicron Theta * Southaven MS * winserver.org

    --- QScan/PCB v1.20a / 01-0462
    * Origin: ILink: CFBBS | cfbbs.no-ip.com | 856-933-7096 (454:1/1)