- Sep 13, 2020
-
-
Rob Swindell authored
active_clients is destroyed in cleanup(), so it must be re-initialized inside the server init/recycle loop.
-
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
... 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
-
- Sep 07, 2020
-
-
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.
-
- Aug 16, 2020
-
-
Rob Swindell authored
-
- Aug 15, 2020
-
-
rswindell authored
More file existence/length checks, with only a WARNING log level (not error) since some QWKnet nodes apparently like to start concurrent QWK packet downloads and inevitably one finishes first, deleting the file, and the second transfer logs and error. Examples: 8/14 08:10:06p 2296 <EPHRAM> downloading QWK packet (1320 bytes) in passive mode 8/14 08:10:06p 3792 <EPHRAM> downloading QWK packet (1320 bytes) in passive mode 8/14 08:10:06p 2296 <EPHRAM> DATA Transfer successful: 1320 bytes sent in 0 seconds (2640 cps) 8/14 08:10:06p 3792 <EPHRAM> !DATA ERROR 2 (No such file or directory) line 1376 opening s:\sbbs\data\file/0888.qwk 8/14 11:28:55p 2576 <POTOGOLD> downloading QWK packet (27129 bytes) in passive mode 8/14 11:28:55p 2576 <POTOGOLD> DATA Transfer successful: 27129 bytes sent in 0 seconds (54258 cps) 8/14 11:28:55p 1924 <POTOGOLD> downloading QWK packet (4294967295 bytes) in passive mode 8/14 11:28:56p 1924 <POTOGOLD> !DATA ERROR 2 (No such file or directory) line 1376 opening s:\sbbs\data\file/0168.qwk Also some more 64-bit file length support (flength returns an off_t now, not a ulong). And ftell() returns a long (not a ulong).
-
- Aug 08, 2020
-
-
rswindell authored
The problem: the sysop (me) is not notified of critical errors (e.g. synchro.net zone file problems) in a timely manner. Part of the solution: notify a configured user (e.g. user #1) via short-message/telegram and email/netmail logged-errors when messages of a configured severity (e.g. "Critical") are logged. The second part of the solution (coming next) will be allowing timed events to log a message of a configurable severity logged when the event fails (returns a non-zero error level to sbbs). I'm saving the error-notification-user-number and log-severity as part of the node.cnf file because: - that's where the validation user number is already set - I can conceive of a large system were certain node ranges (different instances of sbbs) might want different operators to be notified of logged-errors This also means I eliminated all the legacy com port/modem stuff from the end of the node.cnf file. None of that is used in sbbs v3. Also included in this commit are improvements around logging: - reduce the severity of UDP recvfrom failures in services - a more detailed log message when the mail server successfully delivers an email (via SMTP) - easier to answer the question: was that email you/they sent delivered successfully?
-
- May 27, 2020
-
-
rswindell authored
-
- Apr 17, 2020
-
-
rswindell authored
messages (telegrams) from 128 to 256 bytes to resolve observed truncation of download notification messages like this: "Guns N Roses - Hotel Brawl Jam (Live).mp3 was FTP-downloaded by Guest [89.245.6. 199] You were awarded 2,057,356 cred"
-
- Apr 11, 2020
-
-
rswindell authored
together to keep things atomic: 1. Eliminate eprintf() as sbbs_t::lputs() and sbbs_t::lprintf() do the "right thing" (e.g. log to the event log when called from the event_thread). 2. Moved upload_stats() and download_stats() from ftpsrvr.c to getstats.c where I plan to make use of them for JS-based upload/download file support.
-
- Mar 31, 2020
-
-
rswindell authored
-
- Mar 19, 2020
-
-
rswindell authored
is actually an authenticated local user (when usernum != 0). msg_client_hfields() no longer saves the client->user as the SMB SENDERUSERID hfield when the client hasn't been authenticated (as is the case with normal SMTP). The SENDUSERIDs were redundant and misleading for unauthenticated SMTP-received mail messages, so that's now fixed.
-
- Aug 31, 2019
-
-
rswindell authored
(ctrl/node.dab) is constantly closed and re-opened for every non-locking read. This is really slow across network file systems and unnecessary, so use a similar optimization as the C++ sbbs_t class where the file can (and normally is) left open across multiple consecutive reads. Create/use opennodedat() function. Uses the new CLOSE_OPEN_FILE() macro from xpdev/filewrap.h.
-
- Jun 20, 2019
-
-
rswindell authored
resolved host-name on "Hostname:" log lines.
-
- May 31, 2019
- May 07, 2019
-
-
deuce authored
When the command is MLST, fp is NULL, so should not be passed to ftell().
-
- Apr 23, 2019
-
-
rswindell authored
- getnameinfo() was being called with NI_NUMERICHOST in the mail server and web server (but nowhere else) - use a singly-defined macro (STR_NO_HOSTNAME) for the "<no name>" string rather than copying it about - the webserver apparently assumes that session->host_name will always have *some* unique value (e.g. the IP address when no hostname is available) - so account for that special need <grumble>
-
- Mar 07, 2019
-
-
deuce authored
to a second thread before the first has the session set active. Add calls to lock/unlock the certificate to prevent this. The better options is likely to have a function that adds the key and socket and sets the session active in one call and handles the locking internally. But I'm lazy, so we get the lock functions.
-
- Jan 18, 2019
-
-
rswindell authored
File Existence" is disabled (in SCFG->File Areas... Toggle Options), then don't check the disk for the file's existence, size, or date/time.
-
- Jan 12, 2019
-
-
rswindell authored
getfname() on a path that ends in a slash, returns an empty string pointer. Fixed-up some logging output around listing creations.
-
rswindell authored
- use GLOB_MARK to eliminate calls to isdir() in loops - use stat() rather than calls to flength() and fdate() - don't call getfiledat() if getfileixb() failed - profiling info-level log msgs added for index/listing generation, e.g. "detailed listing (3459 bytes) of /main/SBBS (45 files) created in 2 seconds" Fixed bug with indexes generated for directories with the "Access Files Not In Database" option enabled, files not in database were excluded from the generated index (e.g. 00index, 00index.html).
-
- Jan 04, 2019
-
-
rswindell authored
error messages.
-
- Dec 12, 2018
-
-
rswindell authored
- include errno description (strerror output) - exclude (redundant) node number
-
- Nov 18, 2018
-
-
rswindell authored
So I tested the following cases, which all pass: cwd diralias -> 250 CWD command successful. cwd /diralias -> 250 CWD command successful. cwd /diralias/ -> 250 CWD command successful. cwd /diralias/filename -> 550 filename: No such directory. cwd /filealias -> 550 filealias: No such diretory. cwd /filealias/ -> 550 : No such diretory. retr filealias -> 150 Opening BINARY mode data connection for file transfer. retr /filealias -> 150 Opening BINARY mode data connection for file transfer. Hopefully is the end of the fixes for Chrome browser ftp weirdness (tries to "CWD" to anything/everything to determine if it's a file or not).
-
- Nov 17, 2018
-
-
rswindell authored
- a CWD attempt to a /alias/filename would report 'success' to the client (Chrome web browser) - the ftpalias.cfg file was left open in some instances
-
- Nov 06, 2018
-
-
rswindell authored
being CWD'd (chdir'd) into. I resisted the temptation to convert ftpalias.cfg to a different (sane) format (e.g. .ini) at this time, but that really should be done. Oh, and I noticed that aliases don't work with "DIR" wildcards, so that's a bug that needs fixing too.
-
- Nov 05, 2018
-
-
rswindell authored
- user alias was missing from some messages or in the wrong place - added hostname and IP address to the "ILLEGAL FILENAME ATTEMPT" warnings
-
- Oct 31, 2018
-
-
rswindell authored
with Chrome (the browser). Chrome will attempt to "CWD" to a filename and if that filename was an alias from the ftpalias.cfg, we would return a successful (213) response - erroneously. The code did appear to check for this condition by calling ftpalias() with a NULL second (filename) parameter, but that didn't actually work. The 'alias+1' check for a slash appears to have (always?) been clearly wrong as a prefixed slash is already skipped (in the requested path) before calling ftpalias().
-
- Oct 17, 2018
-
-
rswindell authored
-
- Oct 05, 2018
-
-
rswindell authored
Double the duration to wait for client threads to terminate. Heck, this might should be an infinite wait since "bad things" happen if the client thread continues after a cleanup().
-
rswindell authored
-
rswindell authored
with the terminal and mail servers' log output and provide more details (e.g. on errors).
-
rswindell authored
-
- Apr 24, 2018
-
-
rswindell authored
left-justified server prefix), e.g. "term" now added for terminal server errors.
-
- Apr 09, 2018
-
-
rswindell authored
you can't print and free it again after calling that macro.
-
- Apr 06, 2018
- Apr 05, 2018
-
-
rswindell authored
-