Skip to content
Snippets Groups Projects
  1. Jun 05, 2023
  2. Jun 04, 2023
  3. Jun 03, 2023
    • Rob Swindell's avatar
      Use "Message Editors" instead of the (vague) "External Editors" · 81548689
      Rob Swindell authored
      It was redudnant having "External Editors" under "External Programs" (they're
      all external, yeah?) and of course, "Editors of what?"
      
      So yeah, existing docs are now all wrong. :-)
      81548689
    • Rob Swindell's avatar
      Add a 60-second timeout to sbbs_t::passthru_socket_activate() · 0766f913
      Rob Swindell authored
      Keyop reported an issue via irc whereby a user that failed to download a file
      would leave the node "hung" in "downloading via telnet" node status even
      though the user had long since disconnected and the log reflected that the
      terminal server was aware of this:
      
      term Node 4 <user> sexyz: !1152 zmodem_recv_raw TIMEOUT (10 seconds)
      term Node 4 <user> sexyz: !zmodem_recv_header TIMEOUT
      term Node 4 <user> external Timeout waiting for output buffer to empty
      <minutes later>
      term Node 4 connection reset by peer on send
      term Node 4 !ERROR 32 sending on socket 102
      term Node 4 !ERROR 32 sending on socket 102
      term Node 4 !ERROR 32 sending on socket 102
      term Node 4 !ERROR 32 sending on socket 102
      term Node 4 !ERROR 32 sending on socket 102
      term Node 4 disconnected
      term Node 4 !ERROR 32 sending on socket 102
      
      and
      
      term Node 3 <user> sexyz: !1152 zmodem_recv_raw TIMEOUT (10 seconds)
      term Node 3 <user> sexyz: !zmodem_recv_header TIMEOUT
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !Receive timeout (1 seconds)
      term Node 3 <user> sexyz: !1152 zmodem_recv_raw TIMEOUT (10 seconds)
      term Node 3 <user> sexyz: !zmodem_recv_header TIMEOUT
      term Node 3 <user> external Timeout waiting for output buffer to empty
      <minutes later>
      term Node 3 connection reset by peer on receive
      term Node 3 !ERROR 32 sending on socket 96
      
      These nodes were then locked up in call to passthru_socket_activate(false)
      as reported by gdb, e.g.
      
      Looking at passthru_socket_activate(), the deactivation path (called at the
      end of external() in this case), it was clear that this could be an infinite
      loop in the case the user had disconnected:
      
          do { // Allow time for the passthru_thread to move any pending socket data to the outbuf
              SLEEP(100); // Before the node_thread starts sending its own data to the outbuf
          } while(RingBufFull(&outbuf));
      
      These flush/purge loops aren't strictly needed if the user has disconnected,
      but as can be seen by the above logs, the terminal server may not know that
      (the socket may not indicate disconnect) before passthru_socket_activate()
      is called by external().
      
      So... worst case, just do the activation and deactivation buffer flushes
      and purges for 60 seconds.
      0766f913
  4. Jun 01, 2023
  5. May 31, 2023
    • Deucе's avatar
      Use /bin/pwd instead of pwd to get the PWD. · 2ba9dc40
      Deucе authored
      Some shell pwd implementations default to the "Logical" PWD, which
      can contain symlinks.  The POSIX standard for /bin/pwd is to return
      the "Physical" PWD with all symlinks resolved.  Some shells don't
      support the -P option the the built-in pwd, so we don't want to
      reply on that.
      
      For some reason, we're redefining the PWD env variable which should
      by the phyical path, but I'm not really interested in tracking down
      all the windy history for this.
      
      Basically, this bit me once, and now it's fixed.
      2ba9dc40
    • Rob Swindell's avatar
      Truncate trailing whitespace from FidoNet message header fields · 373dca29
      Rob Swindell authored
      It's unclear whether trailing whitespace is supposed to be significant or not
      (FidoNet specs don't say), but I don't see any reason why "John Doe" and
      "John Doe " should be considered unique senders or recipients. Remove any
      trailing whitespace from message subjects too.
      
      This change makes the trailing whitespace truncation in SMB hash functions
      unnecessary (at least for SBBSecho-imported messages), but most (all?) other
      message transports don't allow for this nonsense in the first place.
      373dca29
  6. May 30, 2023
    • Rob Swindell's avatar
      Strip the "in-transit" attribute flag from imported packed-messages · 73783e2b
      Rob Swindell authored
      Log a warning message when either the "local" or "in-transit" flag has been
      stripped from ("Sanitized") imported packed-messages.
      
      Keyop reported a chksmb warning on a FidoNet message that contained the
      'in-transit' attribute:
      <Keyop> Message flagged as 'In Transit'     (?): 1
      <Keyop> fidonet_fidosoft Message Base has Errors!
      
      The message in question appears just to be a corrupted echomail msg coming
      from HPT:
      Sender           '56:43 '
      To               Tommi Koivula
      Subject          test
      X-FTN-AREA       FIDOSOFT.HUSKY
      X-FTN-TID        hpt/os2-wc 1.9.0-cur 2021-03-14
      
      SBBSecho didn't use to convert/import the "in-transit" flag on imported
      netmail or echomail messages, ... until commit 446ab0ef, which
      was needed to support the TickFix robot. So now, let's just sanitize the
      packed-message attributes a little sooner in the import process and log a
      warning when such sanitization has taken place.
      73783e2b
    • Rob Swindell's avatar
      Add option (for deon) to notify offline users of new received email (SMTP) msgs · 543620f3
      Rob Swindell authored
      The notification of offline users was removed from the mail server 13 years
      ago (commit 729eb16b) without a lot of fanfare or explanation. Add an
      option for notification of offline users (in addition to online users) for
      those sysops that want that behavior.
      
      Use the userdat is_user_online() function in place of the getnodedat() loop,
      which also wasn't considering nodes in "logon" status as having a user online.
      543620f3
  7. May 27, 2023
  8. May 26, 2023
  9. May 25, 2023
  10. May 24, 2023
  11. May 22, 2023
    • Rob Swindell's avatar
      Support new -S option to not check Subject CRCs · 66b28bc9
      Rob Swindell authored
      the Subject CRC calculation was changed in May of 2022 (trailing whitespace is
      removed prior to calculation), so messages imported before this date/revision
      of sbbs might be detected as having an invalid/mismatch Subject CRC. This -S
      option can be used to suppress such errors (for Keyop).
      
      Don't support /option syntax any longer in non-*nix builds (just -options).
      Options are now case-sensitive (i.e. -S and -s are different options).
      Bump version to 3.20.
      66b28bc9
Loading