- Sep 04, 2019
-
-
rswindell authored
We don't yet support UTF-8 in node/user messages.
-
- Sep 01, 2019
-
-
rswindell authored
-
- 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.
-
- Aug 09, 2019
-
-
rswindell authored
is being forwarded to an external email address. Introduced in rev 1.690, user-forwarded emails wouldn't work because sending envelope would contain the original forward-path. Thanks again to Alterego (ALTERANT) for testing this stuff and reporting issues with detail!
-
- Aug 03, 2019
- Aug 02, 2019
-
-
rswindell authored
pointer type mismatch in conditional expression format '%s' expects argument of type 'char *', but argument 5 has type 'void *'
-
rswindell authored
MIME-encoded. If any RFC822* header field is a MIME-encoded UTF-8 string, then set the (new) auxattr MSG_HFIELDS_UTF8 flag. This will be used (soon, hopefully) to display UTF-8 encoded header fields to users. There's a gotchas here: - MIME-encoded header fields with other non-ASCII/8-bit charsets (e.g. CP437, ISO-8859) are still stored "as decoded", though the MSG_HFIELDS_UTF8 flag may be set *later* (which would be weird), resulting in a mixture of valid and invalid UTF-8 header fields. One solution would be to UTF-8-transcode all the non-UTF-8 header fields if *any* of them are UTF-8, but we wouldn't know which charset to translate *from*. Assuming CP437 isn't going to be correct 100% of the time - so punt for now and deal with it at display time. e.g. if the MSG_HFIELD_UTF8 auxattr flag is set, but an hfield contains invalid UTF-8 data, don't display as UTF-8 (e.g. treat as CP437). We don't have translations for other charsets (e.g. ISO-8859) setup yet anyway.
-
- Jul 25, 2019
-
-
rswindell authored
(e.g. for UTF-8 Fido or QWK netmail messages sent over SMTP or POP3).
-
- Jul 08, 2019
-
-
rswindell authored
New function (derived from sbbs_t::utf8_to_cp437()): unicode_to_cp437() New utf8 functions: utf8_replace_chars(), utf8_str_is_valid(). utf8_getc() enhancement: val arg may be NULL (for length/validation uses). Convert quoted UTF-8 message text to CP437 when terminal is not UTF8. Set Fido CHRS: UTF-8 header field when posted message is UTF-8.
-
- Jul 06, 2019
- Jun 28, 2019
-
-
rswindell authored
MIME-encoded headers.
-
- Jun 22, 2019
-
-
rswindell authored
-
rswindell authored
getting kind of crazy common now and being employed even when totally unnecessary (e.g. encoding strings that contain just plain ASCII): - normalize message header fields, when possible - normalize UTF-8 encoded characters, when possible (e.g. special punctuation chars) This allows text filters (e.g. subject.can, name.can) to work on MIME-encoded header fields and notifications about received e-mails are legible to humans. Encoded-words that contain actual non-ASCII/CP437 chars (e.g. foreign symbols, emojis) are left as encoded-words to be dealt with by whatever displays the message header. Special handling of folded normalized field values was necessary because "White space between adjacent 'encoded-word's is not displayed." (per RFC 2047)
-
- Jun 20, 2019
-
-
rswindell authored
resolved host-name on "Hostname:" log lines.
-
- May 24, 2019
-
-
rswindell authored
We don't store (findable) hostnames in the file, so don't search for them. Don't search file if the host is listed in the spamblock_exempt.cfg file. If you have a really large spamblock.cfg file, this could result in the unnecessary reading of potential many megabytes of data for each inbound SMTP connection. We might want to read this file even less frequently and store the list in a searchable str_list_t or something.
-
- May 11, 2019
-
-
rswindell authored
smb_freemsgmem(): bounce() is using a strange method of copying a message header in memory (not using smb_copymsgmem) and when it frees the message, ends up with a double-free of the 2 new smbmsg_t members (not header fields): text_subtype and text_charset.
-
- May 03, 2019
-
-
rswindell authored
after sending via POP3 (the MSG_READ attribute flag is already indicating that).
-
rswindell authored
headers). Don't reference the (currently unused) times_downloaded and last_downloaded msghdr_t elements/properties. Set the current node action value *before* calling the scanposts_mod ("Scan Msgs module") in sbbs_t::scanposts().
-
- May 01, 2019
- Apr 29, 2019
- 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>
-
- Apr 11, 2019
-
-
rswindell authored
MIME-encoded/embedded attachments. We probably will want to do this for SMTP-posted messages (to subs) too.
-
rswindell authored
-
rswindell authored
strrchr() here to find terminating chars (quotes, parens, brackets). e.g. '"Joe Shmoe" <joe@shmoe.com>, "Fred Smith" <fred@smith.org>' would be parsed as 'Joe Shmoe" <joe@shmoe.com>, "Fred Smith'.
-
rswindell authored
-
rswindell authored
back in 1993, but were never needed/used.
-
- 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.
-
- Feb 20, 2019
-
-
rswindell authored
(JS bbs.post_msg()): If the WM_QUOTE mode flag is *not* set, then it will auto- create the quote file (quotes.txt) and add the WM_QUOTE mode bit before calling sbbs_t::writemsg(). So if existing JS scripts call bbs.post_msg(..., WM_QUOTE) with a custom-created quote file (e.g. with msg tails), that'll still work as before (e.g. DDMsgReader.js). bbs.email() and bbs.netmail() now support an optional reply_header_object argument which works like bbs.post_msg(). These methods (and the underlying C++ methods: sbbs_t::email(), netmail(), inetmail(), all auto-create the quote file now, when the WM_QUOTE mode flag is *not* set. The auto-created quotes.txt now includes the plain-text version of MIME-encoded messages. the bbs.post_msg(), email(), and netmail() methods now all support reply header objects that came directly from bbs.get_msg_header() *or* copies of such header objects (but the auto-quoting feature won't work when supplied this type of header object). So if passed a header object returned from bbs.get_msg_header(), we can now use the message base (for auto-quoting) and the underlying msg storage directly (no JS parsing necessary). This is what the new js_GetMsgHeaderObjectPrivates() function is used for. js_ParseMsgHeaderObject() (and the underlying parse_header_object() function) now supports either an actual internally-generated msg header object (e.g. returned from bbs.get_msg_header()) or one that is a copy or hand-constructed. quotemsg() no longer tries to get a copy of the msg index/header. It shouldn't have to since we can now get to underlying msg storage in the js_msgbase.c via js_GetMsgHeaderObjectPrivates(). quotemsg() now reads only the plain-text portion of MIME-encoded messages. As part of this effort, I modernized the method prototypes using default argument values (e.g. WM_NONE for wm_mode arguments) and removed some extraneous WM_EMAIL and WM_NETMAIL specifications (these wm_mode flags are automatically added by the sbbs_t::email() and *netmail() functions). savemsg() now *does* support reply-IDs/thread-linkage via the additional 'remsg' argument (when non-NULL). Replaced some use of nulstr with NULL. Replaced more boilerplate SMB open code with calls to smb_open_sub().
-
- Jan 04, 2019
-
-
rswindell authored
251 response which was made optional in RFC2821 - to address privacy concerns.
-
- Dec 12, 2018
-
-
rswindell authored
- include errno description (strerror output) - exclude (redundant) node number
-
- Oct 22, 2018
-
-
rswindell authored
to warning - this is normal/expected (e.g. when mail base is being backed-up).
-
- Oct 17, 2018
-
-
rswindell authored
-
- Jul 30, 2018
-
-
rswindell authored
mail "To" and "From" header fields of the form: user name <user@addr> or "user name" <user@addr> - the email.can filtering would not work
-
- Jul 20, 2018
-
-
rswindell authored
-
rswindell authored
The "official" log line format is (as of right now at least): "[socket] [protocol] [user/host-ID] [! if error]message" Hopefully I can remember that when I add new log messages. Also setting the protocol to SMTPS, POP3S, SEND/TLS, when appropriate and passing it around to pretty much any function that can log a message. Added debug-level log output when the mail sever is sending message body text (every 100 lines).
-