- Nov 16, 2024
-
-
Rob Swindell authored
-
Rob Swindell authored
This appears to be the only way to 100% provide mutual exclusivity between Windows and Linux client sharing a Samba file system. Also, make fmutex_close() take a pointer to the file descriptor so that we can better manage the resource (i.e. don't close a descriptor that's already been closed and possibly valid in another thread).
-
Rob Swindell authored
... which simplifies the fmutex_close() function and signature.
-
Rob Swindell authored
By default, the duration is infinite, but some sysops may not want this file to be ever-grower but rather periodically pruned by the new trashman utility. Sysop that don't use spambait.cfg won't benefit from this change.
-
Rob Swindell authored
-
Rob Swindell authored
Also, don't get hostname unless we're surely going to write to the file.
-
Rob Swindell authored
-
Rob Swindell authored
The 'atomic_remove' argument isn't used in non-Windows builds since we can remove() before close() on non-Windows OSes already.
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
O_EXCL doesn't appear to be working very reliably over Samba, so let's add file locking to the equation.
-
- Nov 15, 2024
-
-
Rob Swindell authored
glob() results might be out of date by the time we look at each file, just skip missing QWK pack semaphore files silently. This should resolve the ".now already gone" messages too. Hopefully. Removed some extraneous quotes around logged event command-lines.
-
Rob Swindell authored
Also when detecting a blocked event_thread, log the event_code that is/was running last.
-
Rob Swindell authored
This removes unnecessary some cruft and complexity, most especially from the event_thread(). Using sbbs_t::fremove() instead of remove(). This probably resolves some Coverity issues where we weren't checking the return value.
-
Rob Swindell authored
ENOENT = "No such file or directory" Passing 'true' for the optional 'log_all_errors' parameter overrides this (logs all errors, including ENOENT).
-
Rob Swindell authored
Add log message when spawning background timed event
-
Rob Swindell authored
Only log messages about QWK mutex files existing when > 60 seconds old
-
Rob Swindell authored
First, fix the logged username bug in the "Lock exists" log message. Next, double check that the trigger file (sem file or REP file) still exists after acquiring the file mutex. Use a temp varible (fname) to make the code easier to read.
-
Rob Swindell authored
Vertrauen's FTP server gets abused by QWKnet logins sometimes and handling the race conditions around QWK packet creation attempts is silly - there's no legit reason why a QWKnet account needs to be logged-in multiple times concurrently to the hub's FTP server, so reject the subsequent logins even when they're on different hosts (as is the case with Vertrauen). As part of this change: - fmutex() now takes an new time_t* argument to (optionally) store the time of the mutex file for helping logging (locked since when?). - time_as_hhmm() created to format a string as either HH:MM or HH:MM[a|p] (depending on system configuration for 12 or 24 hour time formatting). - renamed the old hhmmtostr ()to tm_as_hhmm() (since it takes a struct tm arg) and have it return a non-padded string (useful in more situations without requiring truncation) when the sysop prefers 24-hour time.
-
Rob Swindell authored
-
- Nov 14, 2024
-
-
Rob Swindell authored
Pretty remedial option parsing here, the order is significant
-
Deucе authored
-
Deucе authored
-
Deucе authored
It looks like this has been a long-standing UIFC bug (pre-3.0) If a uifc list that can scroll is showing the bottom-most line, and an option that is not the last is deleted, and both *cur and *bar are left untouched, *bar would be adjusted to be too high, resulting in various highlight bar corruption issues. This commit just rewrites that logic to be comprehensible, and ensures that if bar is set such that the list would end before the bottom of the window, it gets moved up. This makes delete do the right thing (didn't test with insert, that may do weird things). Also, since I figured out a good definition of what bar actually represtens, add a comment to that effect.
-
Rob Swindell authored
So you want to debug (timed) events, but don't want to get debug-spew in your terminal server log output? Now you can: By default, the event thread log level will be the same as the terminal server, but now you can override this by setting [BBS] EventLogLevel in the sbbs.ini file or set it in SCFG->Servers->Terminal Server->Event Log Level.
-
Rob Swindell authored
there are still other undocumented fields/properties, but this one for sure was missing.
-
- Nov 13, 2024
-
-
Rob Swindell authored
If the body of the request mesages message contains a list of area-tags, even if we already have the node linked to those echoes, do the rescan for each listed echo. Previously, only newly-added echoes would be rescanned via this method. Apparently the D'bridge built-in method of generating AreaManager requests uses this syntax (per Ward Dossche). Also, when rescanning due to AreaManager rescan request and generating a response netmail message, include the total number of messages exported as a result. Increase SBBSecho version number to v3.22 (Please upgrade, Fernando) :-)
-
Rob Swindell authored
Configured in SCFG->External Programs->Fixed Events and the Node Daily Events configured in SCFG->Nodes, now can be disabled (without just clearing the command-line) and toggle-on "Native", so the program doesn't have to be added to the dreaded "Native Program List" in order to *not* be treated as a 16-bit DOS program (the default). Eventually I'll allow multiple of each time of system fixed event, but this is an improvement for now at least.
-
Rob Swindell authored
Likely fix for CID 514647
-
Rob Swindell authored
... also the support for multiple spaces or commas separating each filename. Oh, FTS-1, how did I miss thee?
-
Rob Swindell authored
Previously, this feature assumed just one request per FREQ message, however FTS-1 make this clear: If one or more of FileAttached, FileRequest, or FileUpdateReq are asserted in an AttributeWord, the subject{72} field is interpreted as a list of file specifications which may include wildcards and other system-dependent data. This list is of the form FileList = [ FileSpec { Sep FileSpec } ] Null FileSpec = (* implementation dependent file specification. may not contain Null or any of the characters in Sep. *) Sep = ( " " | "," ) { " " }
-
Deucе authored
Prefer sdl2-config from the path, and only use the framework in /Library/Frameworks if that doesn't exist... to that end, don't copy the framework into the app anymore unless you're using it. This should clean out the pipes.
-
Rob Swindell authored
To replace lost the default/conio icon (for Windows builds) recently
-
Rob Swindell authored
When writing the attached file path/names to the FLO file, parse each filename out of the subject, accordingly. This should fix issue #824. There's an inconsistent support in SBBSecho for FileLists in the subjects of netmail messages. In a couple of places, single-space-separated filelists are fine (but not commas or multiple space, even though they are allowed per FTS-1). This particular fix is just for the packing of netmail messages and the appending the attached file(s) to the FLO file. Those other places (e.g. .REQ file creation) will need their own fixes for proper filelist support.
-
Rob Swindell authored
... to be sure configured newsgroup name is RFC compliant.
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
also retrying fread() and chsize(), but that seems harmless.
-
Rob Swindell authored
Note: EBUSY was added to the list of errno values that should cause a retry as observed on Vertrauen, running sbbs-linux on a Samba mount, opening locked files can return failure (-1) with errno = EBUSY, e.g. evnt BBS Events !ERROR 16 (Device or resource busy) in logon.cpp line 616 (logonstats) reading "system stats" access=0 This was apparently resolved by adding EBUSY (16) the values that trigger an sopen() retry (i.e. from [f]nopen()).
-