- Jun 05, 2023
-
-
Rob Swindell authored
Mostly (all?) about unchecked return values. Unexpected failures to read or write some files could've definitely led to some weird bugs.
-
- Jun 04, 2023
-
-
Rob Swindell authored
Or even weirder, u_long? And dereffing a ulong/u_long pointer where you expect to find an IPv4 address? Yet even weirder still. Fix that spit: It appears in_addr_t is defined on all platforms (?), so use that type instead.
-
Rob Swindell authored
No known sightings of these sites actually being the location of a segfault, but as we learned from the segfaults in rblchk(), the first entry in the h_addr_list can be NULL in some cases.
-
Rob Swindell authored
-
Rob Swindell authored
I'm not sure why this one only started popping up now, but h_addr_list is a NULL-terminated list and it makes perfect sense that the first entry could be the NULL-terminator. gethostbyname is obsolete/deprecated and we should address that in a separate commit.
-
Rob Swindell authored
A bunch of possible (but often, not really) use of undefined values. Some ignored return values (e.g. of chsize/ftruncate, read, write, fgets). Other than some added diagnostics upon some of these unexpected syscall failures, there should be no change in behavior from this commit.
-
Rob Swindell authored
-
Rob Swindell authored
Apparently the mosquitto.h won't always be installed in /usr/include on all systems (e.g. Deuce's FreeBSD gitlab-runner system)
-
Rob Swindell authored
-
- Jun 03, 2023
-
-
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. :-)
-
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.
-
- Jun 01, 2023
-
-
Deucе authored
"I can't think of a reason I'd want scfg and echocfg to remain windows (gui) programs" -- Digital Man While I'm here, hack up some SyncTERM vcxproj stuff (which almost certainly doesn't work, but since I can actually test it now, I may as well try)
-
Rob Swindell authored
... or else any pending published messages aren't sent.
-
Rob Swindell authored
-
Rob Swindell authored
-
- May 31, 2023
-
-
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.
-
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.
-
- May 30, 2023
-
-
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.
-
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.
-
- May 27, 2023
-
-
Rob Swindell authored
Contrary to https://mosquitto.org/api/files/mosquitto-h.html#mosquitto_loop_stop, passing force=true is not enough for the mosquitto network thread to end, mosquitto_disconnect() must be called.
-
Rob Swindell authored
JSDOC fix-ups.
-
Rob Swindell authored
Mostly just bitfield->bit-flags.
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
A little more visiblity into the MQTT library (version, function return values)
-
Rob Swindell authored
Recently started truncating trailing whitespace from sender/recipient names before calculating the CRC value (similar to what we do for message subjects as of a year ago). To suppress errors when evaluating messages (with trailing whitespace in sender or recipient namems) created or imported before this change, use this new -N option.
-
- May 26, 2023
-
-
Rob Swindell authored
And don't offset long(er) windows from edges to allow more options to be on screen at once.
-
Rob Swindell authored
Tested with 50 column mode.
-
Rob Swindell authored
Fixes Windows build.
-
Rob Swindell authored
Right now, only supports publish, subscribe to come next. Only included with the mosquitto lib support is enabled in the build.
-
Rob Swindell authored
-
- May 25, 2023
-
-
Rob Swindell authored
No functional change, just a little clean-up.
-
- May 24, 2023
-
-
Rob Swindell authored
ftouch(), semfile_signal(), and JS file_utime() would fail to update a file's access/mod times with errno=EPERM if not run as the file's owner. From "man utime": EPERM times is not NULL, the caller's effective UID does not match the owner of the file, and the caller is not privileged (Linux: does not have the CAP_FOWNER capability). So use a NULL times parameter value when updating to a file's time stamp(s) to the current time.
-
Rob Swindell authored
One of the benefits of the new .ini format config files. :-) This increase introduced a few potential buffer overrun warnings (all writes to smb_t.file ?)
-
Rob Swindell authored
... using snprintf() instead of sprintf()
-
Rob Swindell authored
Since we are now free()ing the opt[] items in bail(), I've seen heap corruption core dumps after navigating the SCFG menus with some long configuration items (e.g. timed events with max-length command-lines). This heap corruption has been present for a long, long time, but not detected since we weren't free()ing these heap-allocated items. Increasing MAX_OPLN would have been a mitigation for this issue, but using snprintf(opt[n],MAX_OPLN,...) is the better fix.
-
Rob Swindell authored
Copy/pasted (with little modification) from https://synchro.net/docs/file_section.html#AdvancedOptions -> "Short Name:" Some short names have specially predefined meaning and it's important to include that detail here.
-
Rob Swindell authored
Unlike strip_ctrl(), does not remove any other control characters from string.
-
- May 22, 2023
-
-
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.
-