1. 18 Sep, 2020 4 commits
  2. 17 Sep, 2020 3 commits
  3. 16 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Resolve race condition around temp directory creation · bc512f0a
      Rob Swindell authored
      It's possible that isdir(temp_dir) will be false and then a mkpath()
      call will fail because some other thread came in and crated the
      directory at that very moment - so save errno if mkdir fails and
      call isdir() again to double-check that the directory wasn't created
      by someone else already.
      bc512f0a
  4. 15 Sep, 2020 4 commits
  5. 14 Sep, 2020 3 commits
  6. 13 Sep, 2020 11 commits
  7. 12 Sep, 2020 2 commits
    • Rob Swindell's avatar
      Don't allow invalid netmail-forwarding addresses · a2f5990b
      Rob Swindell authored
      Don't prompt a new user to forward email to their netmail address if they
      provided an invalid netmail address (not supported by the system).
      
      If a sysop has an invalid netmail address setup for forwarding, don't try to
      forward email (or new user feedback) to that address.
      
      Re-ordered the new user terminal questions a little bit (ask for the backspace
      key first, to get earlier manual PETSCII detection). I'm not sure why I was
      enabling AUTOTERM along with PETSCII before. Removed that as PETSCII cannot
      be auto-detected.
      a2f5990b
    • Rob Swindell's avatar
      Improve startup w/Config Wizard reliability · 351cf95a
      Rob Swindell authored
      I noticed on one particular system that Canceling or Completing
      the configuration wizard on a fresh install, sbbsctrl.exe would
      just shut down (no error dialog or anything, likely a crash of
      some kind). Instrumenting StartupTimerTick() didn't reveal anything
      useful (it ran to completion).
      
      By changing the method of launching the Configuration Wizard,
      I was able to eliminate this observed problem. Now, the StartupTimer
      runs twice on a fresh install (just once for a normal startup),
      and the second run of the StartupTimerTick starts the configuration
      wizard.
      
      I also reverted to the previous behavior of dynamically creating
      and destroying the wizard for each use. There's just too much state
      information to restore if the config wizard is run a second time.
      
      Also, removed a bunch of old Registry settings readings (v3.10/11
      upgrade support) and commented out code.
      351cf95a
  8. 11 Sep, 2020 2 commits
  9. 10 Sep, 2020 1 commit
  10. 09 Sep, 2020 3 commits
    • Rob Swindell's avatar
      Replace fcopy with CopyFile (Win32 API function) on Windows. · 047ca2f8
      Rob Swindell authored
      Thanks to Wilfred van Velzen (2:280/464) for the tip. CopyFile() reduced
      the 1GB file copy test (from and to CIFS/SMB) duration from 37 seconds
      to 5 seconds with very low CPU utilization!
      Created a wrapper for non-Windows OSes in xpdev/dirwrap. This is where
      non-Windows-OS-specific optimized versions may appear in the future,
      but for now it's just the previous fcopy() implementation (using a 256KB
      stack buffer). sbbs doesn't actually copy files very often, so this
      isn't as big of a deal as one might assume. The JavaScript global
      method: file_copy() also benefits from these improvements, so any
      scripts that use it (e.g. tickit.js) will also benefit. binkit.js has
      its own file-copy logic (using a 2MB buffer), so no change there.
      047ca2f8
    • Rob Swindell's avatar
      Improve file copy (fcopy()) performance by more than an order of magnitude. · 914790f5
      Rob Swindell authored
      Using a 256KB read buffer for copying files (rather than one byte at a time).
      Apparently calling fread() is not the same as a bunch of calls to fgetc()
      after all. Or maybe it was the many calls to fputc() being replaced with
      fwrite(). Or maybe it was both. Anyway, decreased the time to copy a 1GB
      file from and to a Samba share over a Gb Ethernet network from 13 minutes
      to less than a minute. This matters when sbbs is backing up your data/mail
      base and the files are big. The mail base is locked while being backed up
      and the longer it takes to back up, the longer the mail base is locked and
      no mail can be received, read or sent during that time.
      914790f5
    • Rob Swindell's avatar
      Spinning cursor over the hardware cursor - disabled. · 2411b2d7
      Rob Swindell authored
      Define SPINNING_CURSOR_OVER_HARDWARE_CURSOR to enable this experimental
      feature. I'm not sure I like it better than the way the spinning cursor
      has been displayed for decades (to the left of the hardware cursor).
      2411b2d7
  11. 08 Sep, 2020 5 commits
  12. 07 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Fix observed race-condition resulting in the HOSTNAME @-code being blank. · dee21ed6
      Rob Swindell authored
      Eliminate the hack in each server where it will over-write startup host_name
      (with the configured Internet email address), if it's blank. This hack was
      subject to a race condition where the parent app (e.g. sbbsctrl.exe) would
      clear or re-initialize the host_name after the sever threads had initialized.
      Instead, just use a function which will return either the startup->host_name
      or (fallback to) scfg.inet_addr.
      dee21ed6