- Apr 17, 2021
-
-
Rob Swindell authored
-
Rob Swindell authored
Set sbbs.ini [services] iniFileName to something other than services.ini to override the default filename. The automatic/optional hostname decoration of the filename is still supported. Addresses request #238.
-
Rob Swindell authored
for the user-to-user file transfer directory
-
Rob Swindell authored
-
Rob Swindell authored
This is still broken (errors when updating existing files) and is still planned for deprecation.
-
Rob Swindell authored
I forget who it was that said they were still using this feature in v3.18, but here you go, it's working again (the /D and /U commands). I'm not migrating any file sender/recipient info from v3.18, so only files added after upgrading to this will be downloadable from the "user" directory (if you have one). Something that I never implemented before but noticed is missing is the removal (or dereferencing) of user-to-user files that were sent from/to a user that is then deleted. So that's still a TODO item.
-
- Apr 16, 2021
-
-
Rob Swindell authored
Even though this is going to be removed / deprecated.
-
Rob Swindell authored
Reported by Daryl Stout (TBOLT)
-
- Apr 15, 2021
-
-
Rob Swindell authored
Addresses CID 319116 and 319090
-
- Apr 14, 2021
-
-
Rob Swindell authored
This started with a Coverity issue (CID 33230) which got me looking at this function and wondering: why is str2 being NUL-terminated here? Why is the length of str2 to be calculated on successive lines? What is with this (long)((long)((long)((long)) typecast? This was some of the oldest code in Synchronet (along with a lot of the other functions in this file). I tried to keep as much intact as possible while still improving the logic and readability.
-
Rob Swindell authored
Do nothing if online != ON_REMOTE. Eliminates some if(online == ON_REMOTE) clauses.
-
Rob Swindell authored
Some QWKnet vote messages are failing: evnt unpackREP <ENSEMBLE> !ERROR 2 (No such file or directory) in qwk.cpp line 1146 (qwk_vote) writing "/sbbs/data/subs/dove-gen" access=-105 info=smb_addvote thread_back field missing Catch this problem a little higher up (in votemsg()) and log the message's reply-IDs to help determine what's the root-cause here. Don't bother calling smb_addvote() if thread_back is 0.
-
- Apr 13, 2021
-
-
Deucе authored
If a callback deletes the one-shot event that invoked it, the event pointer in the caller would be to free()d memory with hilarious results.
-
Rob Swindell authored
CID 319108
-
Rob Swindell authored
CID 331092
-
Rob Swindell authored
-
- Apr 12, 2021
-
-
Rob Swindell authored
It's a wrapper for filedat.c -> format_filename() which can truncate and pad a filename for display purposes.
-
- Apr 08, 2021
-
-
Deucе authored
-
Deucе authored
Prevents weird issues with getting remote address.
-
Rob Swindell authored
When only reading the index (detail = file_detail_index), smb_getfile() just sets the file->name convenience pointer to point to the name in the index. Then when loadfiles() would sort the list, these pointers would not be adjusted (so they would point to the wrong names) resulting in a corrupted file list (e.g. name/size mismatches and no logical sort order). The solution is to call smb_getfile() on each file *after* the read index records have been sorted. This also means that the sort-by-name routines needed to always sort using the index name and not the convenience pointer (which is NULL in this case). While fixing this, I noticed there was no bounds checking in the loadfiles() and loadfilenames() read-loops, so if the indexes happened to be longer than the total_files value from the status header, a buffer under-alloc/overflow would occur and a likely crash as a result. So stop reading the index when the expected maximum number of index records have been read.
-
- Apr 07, 2021
-
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
Adds from/tags/desc/extdesc properties, even when absent or blank. When parsing a file object, set the from, desc, tags and cost properties only if they already have been set or the new values is non-blank/0.
-
Rob Swindell authored
-
Rob Swindell authored
So just always assume that no "user" directory has been configured. At least for now while I ponder whether this is a feature worth restoring and if so, how.
-
- Apr 06, 2021
-
-
Deucе authored
Previously, these both used gettimeofday() which is both expensive to call, and not monotonic. This fixes system.clock_ticks in JS and various internal bits. for when the UTC wall clock jumps. While we're here, fix the documention of system.clock_ticks
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Deucе authored
-
Deucе authored
-
Deucе authored
-
Rob Swindell authored
warning: format not a string literal and no format arguments
-
- Apr 05, 2021
-
-
Rob Swindell authored
Caught by CID 331001 The use of SAFECAT() with a typecast to a pointer is not going to work as expected. This change broke line-based telnet-gateway functionality (unconfirmed, but pretty obvious).
-
Deucе authored
Likely the cause of the crash that killed cvs.synchro.net last night
-
Deucе authored
-
Deucе authored
-
Deucе authored
Specifically, have errors mean the fd is "ready". Also, fix some extra revent clearing and a spy socket issue while we're looking at this code. Should fix issues with CGI scripts that close stdin/stdout but do not terminate, and maybe deal with some other corner cases at the same time.
-
Deucе authored
-