- Sep 14, 2024
-
-
Rob Swindell authored
This served exactly no purpose (since the idxrec_t existed at the same offset in both parts of the union). So this was just some weird artifact from the new filebase development.
-
Rob Swindell authored
Increasing size of mode[] element by 2 bytes eliminated these GCC warnings that seem like false-positives to me: sbbs.h:194:48: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 194 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ js_file.c:225:25: note: in expansion of macro ‘JSSTRING_TO_STRBUF’ 225 | JSSTRING_TO_STRBUF(cx, str, p->mode, sizeof(p->mode), NULL); | ^~~~~~~~~~~~~~~~~~ js_file.c:42:17: note: at offset 5 into destination object ‘mode’ of size 5 42 | char mode[5]; | ^~~~ Similar use of JSSTRING_TO_STRBUF in other files (js_console.cpp, js_archive.c) (with larger target buffers) does not trigger the same warnings.
-
Rob Swindell authored
DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata. See merge request !459
-
DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata.
-
- Sep 13, 2024
-
-
Rob Swindell authored
Ctrl-A - Select All Ctrl-F - Filter IP address DEL - Close Socket Also, use Begin/EndUpdate() calls to batch updates to the ListView in Timer tick (no visible difference, but it's the right thing to do). I don't know why C++Builder increased the TextHeight value of this form from 13 to 15, but doesn't seem to really matter (or at least, I couldn't tell).
-
Rob Swindell authored
I don't know why this was set so wide (10 pixels), but that did help to easily see that it was being placed in the wrong spot in the form (between the tool button bar and the top panel). But we don't need it to be that thick. 1 pixel is still enough to be able to grab it with the mouse and resize the top/bottom panels.
-
Rob Swindell authored
For who knows how long now, the horizontal splitter that allows the sysop to control the size of the top 2 panels (server forms), was displayed above the top panel, not between the top and bottom panel, thus making the panel heights not controllable. Weird. Change the order of making the controls visible to insure that the splitter is displayed below the top panel and on top of the bottom panel. Also (non-functional changes): Remove redunant mutex from client_on() - makes no difference. Use try/catch in client_on() to try to catch VCL exceptions - doesn't catch the "invalid index" error popups that we see on occasion. <shrug>
-
Rob Swindell authored
... bug introduced in commit 29a35642. strListMerge() doesn't realloc the strings in the list, so we don't want to free the strings in this list here. This is likely the cause of the crash Keyop eluded to in #synchronet.
-
- Sep 12, 2024
-
-
Rob Swindell authored
... and log a debug-level log message when doing so. The current input/receive timeout duration (5 minutes) might be a bit long to leave a message base open (though, there's no known issue with doing so). For example, when users read message bases using the terminal server, they can sit for much longer than 5 minutes reading an open message base.
-
Rob Swindell authored
As Nelgin pointed out, the nntpservice can leave a message bases open while a client is idle. Normally, an inactive client would be disconnected after 5 minutes of inactivity, so that wouldn't be much of an issue. However, if authenticated as a user with the H-exemption, no auto-disconnection after input timeout would happen. So let's close any open message base for good measure. The input/receive timeout probably should be configurable and lowered to a smaller duration (one minute?). I'll leave that for another commit.
-
Rob Swindell authored
Reported by Keyop (upon being auto-disconnected overnight): !ERROR 9 (Bad file descriptor) in data_ovl.cpp line 47 (putmsgptrs) writing "message pointers" access=0 Unfortunately, the way putmsgptrs() was written, we couldn't tell if this was an open (data/user/*.subs file) issue or a writing issue. So create putmsgptrs_fp() and use that from sbbs_t::putmsgptrs(), so we can log a different error (with more accurate details) if it's a file-open failure versues a file-write failure.
-
Rob Swindell authored
Fix #782 - websocketservice.js garbles input on Banana Pi running Armbian Closes #782 See merge request !458
-
-
Rob Swindell authored
The "from_ip" header field of QWK messages is checked against blocked IP addresses, but was only checking against IP addresses from ip.can, not any addresses listed in ip-silent.can. These 2 list files are now merged together for the purposes of filtering during QWK/REP packet import.
-
- Sep 10, 2024
-
-
Rob Swindell authored
Add '-v' (increase verbosity) option, used to display msg dates and timezones ... when using the the 'l' (list messages) command (to view post date/time). Use '-vv' or '-v -v' to see timezones of messages. The -v option is now also applicable to the 'v' (view) messages command (now redundant with the 'V' command). Features as requested by Nelgin as part of issue #786. Removed day-of-week from date/times displayed. We don't need that level of user-friendliness with this tool. However, we are also displaying 12h/am/pm times. Some sysops probably would prefer 24hour time, so that should be considered at some point.
-
Rob Swindell authored
... related to issue #786. Also, don't check for a message-ID if the message-type does not match the expected message type ("type mismatch").
-
Rob Swindell authored
1. When a 0-length bundle file was encountered or an unpacking error occurred, any remaining bundles for the current search day-of-week (e.g. *.SU*) would be skipped/ignored. This bug (issue #764, regarding the 0-length file part), is fixed by not incrementing the day-of-week index in the main loop, but rather only incremeting the index when all bundles for the current day-of-week have been processed. 2. The age calculation for 0-byte/length bundle files was incorrect, so all 0-length bundle files would always be considered "less than 24-hours old" (and thus, never auto-deleted). This exacerbated the problem of issue #764 since it would persist until the 0-length files were manually deleted. Fixed the file age calculation and now logging the date/timestamp of the 0-length file as well. 3. Don't do the switch/case/sprintf dance when we're not re-running a glob() search. 4. Replace the switch/case statement with an array of week day names/patterns. 5. Ignore (with a warning log message) any sub-directories of the inbound directory that happen to match the bundle file search pattern. 6. Use better variable naming. 7. Refer to files with a length of 0 as "0-length" instead of "0-byte" in log messages.
-
- Sep 09, 2024
-
-
Rob Swindell authored
-
- Sep 07, 2024
-
-
Rob Swindell authored
I think this might fix issue #781. I suspect that SBBS (the MQTT client) is being disconnected by the server ("due to protocol error") *after* the call to mosquitto_connect_bind() is successful. We don't have any correponding log output for this case, but at least we can track the connection status accurately using the Mosquitto client callbacks and not try to publish when we're not connected.
-
Rob Swindell authored
For cases where an mqtt struct is shared between threads without concurrency control. I'm making this improvement in light of research into issue #781, though I don't expect this change to fix the reported issue. The reported error seems to come from the event thread (publishing node status upon starting to run the "DAILY" event) when a broker connection was not successful, however the reporter (Nelgin) may not have had debug-level logging turned on, so didn't capture the successful broker-connect log message. I think the broker connection *was* successful and perhaps then terminated by the broker ("due to protocol error"?).
-
Rob Swindell authored
Fix issue #785
-
Rob Swindell authored
It appears I had the idea to make the CantPost text.dat string a format string before, but never quite finished that change (e.g. made the change to email.cpp and text.dat too).
-
Rob Swindell authored
There's a whole lotta calls to sprintf() then logline() that could be reduced with this function.
-
Rob Swindell authored
For regular user QWK Relpy packet uploads only, if no timezone is specified (e.g. via @TZ kludge or HEADERS.DAT), then over-ride the message's "posted" date/time with the current date/time since we're going to set the message's timezone to the BBS's local timezone as well. This is a fix for issue #783 reported by Chris Jacobs. If/when we support user-specified timezones, then this likely would be a place where we'd want to use the user's timezone.
-
- Sep 06, 2024
-
-
Rob Swindell authored
From todo list on Vertrauen, not in GitLab (shrug)
-
- Sep 05, 2024
-
-
Rob Swindell authored
dd_lightbar_menu.js: Fix for out-of-bounds row updates when updating the scrollbar in DDLightbarMenu_UpdateScrollbar() See merge request !457
-
dd_lightbar_menu.js: Fix for out-of-bounds row updates when updating the scrollbar in DDLightbarMenu_UpdateScrollbar()
-
- Sep 04, 2024
-
-
Rob Swindell authored
DDMsgReader: Fix for saving an ANSI message to the local BBS PC (undeclared variable error). Found by Amessyroom See merge request !456
-
DDMsgReader: Fix for saving an ANSI message to the local BBS PC (undeclared variable error). Found by Amessyroom
-
- Aug 28, 2024
-
-
Rob Swindell authored
ddfilelister: "Edit" item text on the bottom horizontal menu for traditional/non-lightbar interface See merge request !454
-
-
- Aug 27, 2024
-
-
Rob Swindell authored
When no files with extensions are found, though they matched the glob() pattern, a NULL pointer deref would result (segfault). This could happen if the only files matching the pattern had no extenions or were directories (not files). Fix for issue #779
-
- Aug 23, 2024
-
-
Rob Swindell authored
... this was the cause of some observed unnecessarily high disk/file server (Samba) utilization, as we call getnodedat() a lot. utime() opens and closes the file, which was already open - and we're not modifying the file, so updating the 'modification time' here is wrong anyway. Disabling this 21-year old bit of logic resulted in a pretty dramatic reduction in Samba (smbd) CPU utilization on Vertrauen. If a BBS actually needes this hack (e.g. for NFS compatibility, as Deuce eluded in the comment), they'd be better off just setting the "Keep Node File Open" node setting (in SCFG->Nodes) to "No".
-
Rob Swindell authored
I'v been getting errors locking user.tab (for read) for a while (over samba), so hopefully this helps. The lockuserdat() total timeout duration extends from about 5 seconds to about 45 seconds (with an incremental back-off). Implement the same lock-retry logic/limit in putuserdat().
-
- Aug 20, 2024
-
-
Rob Swindell authored
... requested by someone in #synchronet
-
- Aug 19, 2024
-
-
Rob Swindell authored
Apparently, Mike Dippel's actual FidoNet address is 3:712/1321.5
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
- Aug 18, 2024
-
-
Rob Swindell authored
-