- 18 Sep, 2020 4 commits
-
-
Rob Swindell authored
When a sysop wants to chat, he wants to chat right now, damnit!
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
rather than just falling over and twitching like an injured slug
-
- 17 Sep, 2020 3 commits
-
-
Rob Swindell authored
- JS system.operator_available property (read/writeable) - SYSAVAIL @-code which expands to LiSysopAvailable or LiSysopNotAvailable (use the new SYSAVAIL @-code in the chat menu to show availabilty to chat) - ;avail sysop command (in str_cmds.js) to toggle sysop availability - Changed LiSysopIs text.dat string to be a format string (include %s) and the trailing \r\n, so that it can be used in str_cmds.js or anywhere else to report sysop availability to chat, or can be set to blank string to display nothing (this would not work previously).
-
Rob Swindell authored
-
Rob Swindell authored
-
- 16 Sep, 2020 1 commit
-
-
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.
-
- 15 Sep, 2020 4 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
Apparently, calling close(-1) on WinXP will cause a crash. Don't do that. Make closeuserdat() resilient to an un-open file descriptor and use it instead of close().
-
Rob Swindell authored
-
Rob Swindell authored
This fixes the stat() issue on Windows XP/2K3 by allowing sbbs to benefit from the run-time library updates that Microsoft releases periodically (like https://www.microsoft.com/en-us/download/details.aspx?id=53840). For more info on the stat() issue which caused all kinds of sbbs errors (e.g. creating directories initially, but a lot more): https://stackoverflow.com/questions/32452777/visual-c-2015-express-stat-not-working-on-windows-xp Since we are using cryptlib which requires the MSVC runtime DLL anyway (it is the default build behavior of MSVC), we weren't really gaining anything from statically linking the CRTL (LIBCMT.LIB). And for some reason, an up-to-date MSVC2019 still has (links-in) a LIBCMT.LIB file that includes this stat bug. All the online help resources I found just to seem to suggest updating the CRTL DLLs (on the target system), with no mention of any fixes available for the static CRTLs on the build system. But with the no gain from static linking anyway, I figured it was time to switch to DLL CRTLs. The debug builds are still statically linking the CRTL for no particular reason.
-
- 14 Sep, 2020 3 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
- 13 Sep, 2020 11 commits
-
-
Rob Swindell authored
active_clients is destroyed in cleanup(), so it must be re-initialized inside the server init/recycle loop.
-
Rob Swindell authored
bool (JSVAL_FALSE), not number (JS_FALSE).
-
Rob Swindell authored
Throw an exception if no filename is specified (rather than just abort the script by returning JS_FALSE). The return value is supposed to be a bool, not an int (JS_TRUE != JSVAL_TRUE).
-
Rob Swindell authored
Fix reported and observed crash in cleanup() (in ftp, mail, websrvr) when failing to create the temp directory. This was due to cleanup() being called before the protected integer "active_clients" was initialized. Also, md() needs to return the errno value (not a BOOL) since the caller may be in another DLL with a different errno (which likely has a value of 0/no error).
-
Rob Swindell authored
-
Rob Swindell authored
... in other non sbbs.dll modules (e.g. *srvr.dll). So now log error messages elsewhere where appropriate. DLL-exported and optimized md() a bit.
-
Rob Swindell authored
Extended node status can (and often does) contain Ctrl-A sequences. Strip those characters/sequences before putting into the NodeForm->ListView lines here.
-
Rob Swindell authored
-
Rob Swindell authored
If the user's terminal was auto-detected as being ANSI, yet they had their account settings manually-overridden to use PETSCII, automatically switch back to auto-terminal mode (e.g. with ANSI).
-
Rob Swindell authored
-
Rob Swindell authored
Read and write the Log fonts when importing/exporting sbbsctrl.ini. Use sbbsctrl*.ini as the default Import Settings file mask.
-
- 12 Sep, 2020 2 commits
-
-
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.
-
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.
-
- 11 Sep, 2020 2 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
For Alpha (Robbie) for use with an RLogin game door server, apparently.
-
- 10 Sep, 2020 1 commit
-
-
Rob Swindell authored
-
- 09 Sep, 2020 3 commits
-
-
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.
-
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.
-
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).
-
- 08 Sep, 2020 5 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
- 07 Sep, 2020 1 commit
-
-
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.
-