about summary refs log tree commit homepage
path: root/lib
DateCommit message (Collapse)
2015-11-21config: allow underscore in section names
Apparently git allows them, and they're definitely alright in email addresses.
2015-11-20various internal documentation updates
Hopefully this gives new hackers a better overview of how the components relate to each other.
2015-11-18nntp: fix printf warnings
Error messages and request lines may contain '%' which would throw off Perl printf.
2015-11-18feed: capitalize "Atom" consistently
This is the official name of the spec, so refer to it as such despite the file extension being lower-cased
2015-11-18view: further reduce size of attribution/timestamp
The "by" on the message page and "-" in the index are unnecessary and readers should have no trouble figuring out what the attribution/timestamp line means.
2015-11-18view: remove "created" and "updated" noise words
They increase HTML size and add to visual noise without telling enough useful information.
2015-10-15filter: fix handling of bad attachments
Improve error messages and use a better regexp for detecting printable characters in attachments.
2015-10-08view: fixup bad comparison
Oops, there is no longer a 3rd element. Fixes: 759efc037728a766ee80f1b0d3c1fd7b8c76a05f ("view: remove attribution for topics in top-level view")
2015-10-08view: remove attribution for topics in top-level view
It clutters up the page unnecessarily, as identity of the topic starter/updater probably doesn't matter if there's no exact message to attribute the message to.
2015-10-04mbox: generate Archived-At, List-Post, List-Archive headers
Downloaded mboxen can be archived/stored indefinitely, try to make it easy for future archaelogists to find the online archive location.
2015-10-04mbox: kill Bytes meta-header, too
It may be present in messages imported from NNTP.
2015-10-04view: add links for mbox and atom feeds in homepage
Having per-thread Atom feeds and downloadable mboxen is powerful and should be more easily visible/accessible to casual readers.
2015-10-03mda: support a 'filter=scrub' option for external lists
For list where we are not the primary archival entry point, defaulting to filter=scrub makes sense since their list conventions may be more tolerant of HTML and other crap than we are.
2015-10-03drop Message-IDs longer than 244 bytes
Xapian has this limit for terms, and there are likely no legitimate Message-IDs (or single header lines) this long; so there's no need to workaround this limit.
2015-10-02rename mid_compress to id_compress
We use it as a general compressor for identifiers such as subject paths, so using the "mid_" prefix probably is not appropriate.
2015-10-02Msgmap: pass ReadOnly DBI flag for non-writable opens
This doesn't seem to do anything on my older system, but maybe it will in newer or future versions of DBD::SQLite. Anyways it can be helpful for documentation purposes, too.
2015-10-01searchidx: subject is not a term
Sometimes subjects are excessively long and hit Xapian's 245-byte term limit. We can still perform subject-only searches with a probabilistic prefix.
2015-10-01nntp: better delimit error message
It may be hard to tell what command triggered an error, otherwise.
2015-10-01nntp: remove reference to non-existent function
Oops
2015-10-01nntp: implement idle time expiration
We don't want to waste precious server memory on clients which have been idle for longer than 3 minutes.
2015-10-01filter: more consistent labeling of rejections
While we're at it, reject non-plain-text top-level messages, too. They probably do not exist in practice, but we cannot afford to scrub given policies implemented by overzealous mail providers. While we're at it, update the comment for strip_multipart.
2015-10-01searchview: fix syntax error
Oops, I forgot to run the syntax check for this.
2015-10-01filter: do not strip Reply-To
It's often part of idiotic policies to prevent mailing lists from working at all.
2015-10-01mda: keep DKIM crap
This is probably unsafe
2015-10-01view: correctly pick latest in index anchor links
The last message in a thread _display_ is not necessarily the latest message in the thread. We must go by the Date: header on the messages themselves as a best-guess. Of course Date: headers may lie, but most mail clients trust them by default, so we will, too.
2015-09-30view: use '+' instead of '%20' to escape spaces in mailto:
'+' is more shoter and more readable in query parameters than '%20'
2015-09-30nntp: implement OVER/XOVER summary in search document
The document data of a search message already contains a good chunk of the information needed to respond to OVER/XOVER commands quickly. Expand on that and use the document data to implement OVER/XOVER quickly. This adds a dependency on Xapian being available for nntpd usage, but is probably alright since nntpd is esoteric enough that anybody willing to run nntpd will also want search functionality offered by Xapian. This also speeds up XHDR/HDR with the To: and Cc: headers and :bytes/:lines article metadata used by some clients for header displays and marking messages as read/unread.
2015-09-30nntp: implement LIST HEADERS
We shall remove slow, unoptimized headers in XHDR/HDR to avoid becoming an easy DoS target.
2015-09-30nntp: MODE READER denies posting
Redundantly confirm to clients we do not accept posting with the MODE READER command. ref: RFC 3977 5.3.1
2015-09-30daemon: always autoflush stdout/stderr
Users may log output to a pipe, so ensure these outputs are unbuffered in userspace and go to the operating system ASAP for other processes to pick up.
2015-09-30remove unnecessary fields usage
It doesn't actually give performance improvements unless we use types with "my", but we don't do that. We'll only continue using fields with Danga::Socket-derived classes where they're required.
2015-09-30nntp: reduce syscalls for LIST OVERVIEW.FMT
No point in sending such a short, bounded response with multiple syscalls.
2015-09-30nntp: HDR returns 225, not 224
This is stipulated by RFC 3977 8.5.1, but apparently I misread it.
2015-09-30search: remove get_subject_path
We probably won't be supporting this in the public API
2015-09-25daemon: fix various permissions + daemon issues
When using user-switching in a single process, we must be careful to not inadvertantly create new Msgmap sqlite3 files. We must also ensure we set proper permissions on any files we create. Additionally, our refactoring was broken as we failed to actually daemonize or preserve the parent FD in a worker process. Finally, default to one worker process since our code may be fatally broken and it's nice to be able to scale to multiple cores via SIGTTIN if needed.
2015-09-25nntp: avoid signals for long responses
Using a signal-based timer can hurt throughput on a machine that's overloaded. Ensure there's always forward progress and reduce the number of syscalls we make, too.
2015-09-25git: use fields for GitCatFile
Micro-optimization, but it make using Danga::Socket for watching pipe readability easier at some point.
2015-09-25git: signal-safety for pipe writes
I've yet to hit it, but syswrite has chance of returning EINTR on a blocking pipe.
2015-09-25nntp: prefix FD on every log line
This can help us track down what request patterns clients will perform when we have multiple clients.
2015-09-25nntp: do not repeat result on blocked write
Oops, we must increment our range even if we yield or get blocked on output buffering.
2015-09-25searchidx: remove unused sub: next_doc_id
It seems like it was never used
2015-09-25nntp: consistently use 501 for unsupported LIST
This is required by RFC 3977, section 3.2.1
2015-09-25nntp: HDR allows metadata prefixed with ':'
RFC 3977, section 8.5.2 states metadata lookups can be done with HDR.
2015-09-24nntpd: hoist out daemon management code
We'll probably be supporting read-only IMAP, or maybe we'll just implement a custom HTTP server so users can manage/upgrade the same way as the nntpd while being immune to slow clients.
2015-09-24nntp: avoid infinite loop on partial read
Oops :x
2015-09-24nntpd: move busy check to NNTP package
This is better encapsulated and hopefully more readable. While we're at it, check for being inside a long response, too.
2015-09-24nntp: fix XOVER command
Oops, we need to test commands more closely :x Add a missing prototype while we're at it for extra checking.
2015-09-23nntp: support HDR command from RFC 3977
This is similar to XHDR, but differs in how it handles Message-ID lookups.
2015-09-22nntp: XHDR lookups by Message-ID may cross groups
This is allowed by RFC 2980 and HDR (to-be-implemented) in RFC 3977 supports it, too.
2015-09-22nntp: XHDR fixes for Message-ID lookups
We'll require some modifications for HDR support, though.