Skip to content
Snippets Groups Projects
  1. Jul 27, 2016
    • deuce's avatar
      If the file from a TIC already exists, use wildmatch() on Replaces to see · 2ce026fb
      deuce authored
      if it should be replaced.  It's common on FidoNet for replaces to have a
      wildcard in it.
      
      Also, add support for a new Handler key in tickit.ini.  This defines a file
      which defines a Handle_TIC function and whose last statement isn't null.
      The parsed TIC file is passed to this function and, if it returns true, the
      file is assumed to be handled.
      2ce026fb
  2. Jul 24, 2016
  3. Jul 22, 2016
  4. Jul 21, 2016
  5. Jul 13, 2016
  6. Jul 12, 2016
  7. Jul 11, 2016
  8. Jul 05, 2016
  9. Jun 30, 2016
    • rswindell's avatar
      When writing to area file (areas.bbs), pad echo tag to maximum length · 03ecec67
      rswindell authored
      (35 chars). Use macros for maximum internal code length and echo tag lengths.
      03ecec67
    • rswindell's avatar
      Address AreaFix bugs: · fa06eda4
      rswindell authored
      1. Reported by Accession and Rastus: when linking/unlinking echoes via AreaFix,
          all the linked node addresses (in the areas.bbs file) would be changed to a
          garbage address (e.g. "16720:17235/19521.19551").
          Bug introduced in sbbsecho.c rev 3.13 (May-9-2016).
      
      2. Reported by Accession:
          Extraneous debug-level log output (a log line for each echo that exists in
          the area file): "Adding areas for <addr> to path/to/areas.bbs" and
          "Removnig areas for <addr> from path/to/areas.bbs".
          Introduced way back in sbbsecho.c rev 1.249 (Apr-17-2014).
          Now, a single debug-level log entries is added per areafix change request
          for all adds (area linking) and then all deletions (area unlinking) which
          makes much more sense.
      
      3. Observed in the code:
          When using AreaFix to modify the area file (areas.bbs), if a modified
          echo's internal code was 16 characters, exaclty, then no space would be
          added between the internal code and the echotag.
          This bug has apparently been possible since the introduction of internal
          code prefixes in 2003.
      fa06eda4
  10. May 31, 2016
  11. May 27, 2016
  12. May 26, 2016
  13. May 25, 2016
  14. May 21, 2016
  15. May 19, 2016
    • rswindell's avatar
      Implement IP temporary ban: · ee159c40
      rswindell authored
      By default, after 20 consecutive (unique) failed login attempts, *or*
      a failed login attempt wtih a name from the name.can filter file.
      The default temporary ban duration is 10 minutes.
      The temporary ban thershold is configurable via LoginAttemptTempBanThreshold
      in sbbs.ini and the ban duration is configurable via LoginAttemptTempBanDuration
      (in seconds).
      ee159c40
  16. May 18, 2016
  17. May 14, 2016
    • deuce's avatar
      Make the IRC_Queue recv (and the new send) method take a socket argument · f997cf33
      deuce authored
      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).
      f997cf33
  18. May 13, 2016
    • rswindell's avatar
      Fix bug introduced in rev 167 (the IPv6 commit): · b4049a3e
      rswindell authored
      calling Socket.bind() with an undefined hostname parameter would result in a
      getaddrinfo() failure, e.g. on Windows, WSAHOST_NOT_FOUND 11001
      The ircd.js passes the value of server.interface_ip_address to socket.bind()
      and when run from jsexec, this property is not defined. So you couldn't run the
      ircd from jsexec or you'd get "!Error 0 binding socket to TCP port xxx".
      Also now setting the socket last_error value upon getaddrinfo() failure so
      if there is a failure, the error message won't include the erroneous "Error 0".
      b4049a3e
    • deuce's avatar
      Fix long-standing problem POSTing very large entities (when using new · 5fde6960
      deuce authored
      Synchronet builds).  Use multiple send()s when needed.
      5fde6960
    • deuce's avatar
      Handle new send() return value in the same manner. This can be fixed more · 7377a4c0
      deuce authored
      correctly now though.
      7377a4c0
    • deuce's avatar
      "Fix" send return value usage. · 5dbe9d1d
      deuce authored
      5dbe9d1d
    • deuce's avatar
      Fix socket.send() so that it returns the number of bytes sent. The · 698ca0bd
      deuce authored
      underlying send() function is free to send a subset of the bytes, and
      occasionally does (especially on non-blocking sockets).  The return value
      was true if all bytes were sent or false if not all bytes were sent.
      
      The new behaviour is to return the number of bytes sent or null on failure.
      
      This is mostly compatible with existing code which appears to universally use
      if (!sock.send(str))
      
      Cases where it's not compatible are when a zero-length string is sent.  The
      handling of errors is slightly different now too... previously, if you
      retransmitted on failure, the stream would "stutter" now it will have
      "holes".
      698ca0bd
  19. May 12, 2016
    • deuce's avatar
      Various fixups with an eye to reducing latency and fixing ping timeouts · e38cf4ae
      deuce authored
      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.
      e38cf4ae
    • deuce's avatar
      Re-order load()s · b41701b9
      deuce authored
      b41701b9
Loading