about summary refs log tree commit homepage
DateCommit message (Collapse)
2016-06-20searchview: use inbox->msg_by_mid
This abstracts out the path lookup logic and and allow us potentially allow different heads in the same repository. We may also bypass slow tree name lookups in the future by storing the raw blob ID in the Xapian document. Followup-to: 4b313dc74bc9 ("feed: various object-orientation cleanups")
2016-06-20searchview: fix Atom dump
Ugh, and I will still need to write better tests for this (and a billion other things :x) Fixes: 4b313dc74bc9 ("feed: various object-orientation cleanups")
2016-06-20nntp: use lookup_mail instead of lookup_message
lookup_mail is safer since it won't inadvertently load ghosts.
2016-06-20www: improve topic view by scanning for ghosts
This should help avoid having too many fake top-level messages in the topic view since we only have a partial window for threading results.
2016-06-20address: remove quotes around names
They're needless for actual display once outside of email headers. But we will still show them when displaying mock headers in the permalink view.
2016-06-20inbox: move field population logic to initializer
Inboxes are normally created by Config, but having the population logic in Inbox should make it easier to mock for testing.
2016-06-20feed: various object-orientation cleanups
Favor Inbox objects as our primary source of truth to simplify our code. This increases our coupling with PSGI to make it easier to write tests in the future. A lot of this code was originally designed to be usable standalone without PSGI or CGI at all; but that might increase development effort.
2016-06-20mbox: avoid write dependency for streaming
Prefer to return strings instead, so Content-Length can be calculated for caching and such.
2016-06-20mbox: remove feed dependency
We do not need feed options there (or anywhere, hopefully).
2016-06-20feed: remove dependence on fh->write for streaming
We'll be switching to a getline/close response body to give the HTTP server more control when dealing with slow clients.
2016-06-20feed: avoid needless method dispatches on 404
We overuse streaming, here. Allow Content-Length to be calculated in this case.
2016-06-20MANIFEST: update with recent changes
And add a check-manifest target to the Makefile to ensure we're up-to-date with git (but do not depend on git).
2016-06-19examples/*@.service: wait one day for graceful shutdown
Because sometimes folks will want to download gigantic mboxes or make large clones over Tor which are not resume-friendly. Note: the timeout logic in nntpd is somewhat over-aggressive and can break some large slrnpulls. This ought to be easily recoverable on the client-side, though, since it's based on per-message fetches.
2016-06-19search: reopen and retry on updated databases
This seems like a nasty thing which breaks downloads of large mailboxes.
2016-06-19http: constrain getline/close responses by time
This allows us to yield control to other clients gracefully if getline takes too long to generate a chunk. This is more expensive but should not cost a syscall on modern 64-bit systems.
2016-06-19http: avoid recursion when hitting write count limit
Use the EvCleanup::asap handler to reschedule our writes after yielding to other clients.
2016-06-19mbox: set gzip timestamp to the Unix epoch
This allows consistency between different invocations from roughly the same period and is no worse for caching any any of our existing HTML and Atom feeds. We cannot set the timestamp to the end date since messages may be added to the repository while we are iterating (and this streaming mechanism will pick them up).
2016-06-19watch_maildir: tighten up path checks
Only mark seen messages as spam, otherwise it could be too aggressive and cause problems or over training. We wouldn't want a wayward FIFO ruining our day, either :)
2016-06-19import: allow messages without subject
Because our WatchMaildir module is liberal about what it accepts, we can potentially have messages without a subject.
2016-06-19watch_maildir: spam removal support
We can support spam removal by watching a special "spam" Maildir, too. We can run public-inbox-learn as a separate step, and that command will be improved to support auto-learning, too.
2016-06-18watch_maildir: add scan test
This should be portable despite the intended use of this directory being non-portable.
2016-06-18emergency: avoid needless mkpath dependency
Be more explicit and slightly speed up tests.
2016-06-18daemon: be less misleading about graceful shutdown
We do not need to count the httpd.async object against our running client count, that is tied to the socket of the actual client. This prevents misleading sysadmins about connected clients during shutdown.
2016-06-18spawn: try to keep signals blocked in spawned child
While we only want to stop our daemons and gracefully destroy subprocesses, it is common for 'Ctrl-C' from a terminal to kill the entire pgroup. Killing an entire pgroup nukes subprocesses like git-upload-pack breaks graceful shutdown on long clones. Make a best effort to ensure git-upload-pack processes are not broken when somebody signals an entire process group. Followup-to: commit 37bf2db81bbbe114d7fc5a00e30d3d5a6fa74de5 ("doc: systemd examples should only kill one process")
2016-06-18view: consolidate per-message newline handling
We don't want to blindly append a trailing newline if the message ends in quoted text leading to a <span>, as a newline is already added to a <span>...
2016-06-18view: minor tweaks to reduce long lines
Fold addressee fields to better delimit destinations, reduce horizontal rule <hr /> to reduce scrolling, and use spaces to indent "git send-email" example.
2016-06-18view: introduce WwwStream interface
This will allow us to commonalize HTML generation in the future and is the start of moving existing HTML generation to a "pull" streaming model (from the existing "push" one). Using the getline/close pull model is superior to the existing $fh->write streaming as it allows us to throttle response generation based on backpressure from slow clients.
2016-06-17feed: split out top-of-page generation
This will eventually allow us to reuse code to generate a common header.
2016-06-17www: undefined query string values are empty strings
We use very short query parameters for search, so "&r" without a '=' implies truth for 'r' (relevance).
2016-06-17filter/base: reject more types by default
Try to be descriptive for some of these.
2016-06-17www: escape HTML in footer description
This isn't a security vulnerability since $GIT_DIR/description is controlled by the admin; but it causes the footer to misrender.
2016-06-17remove dependency on IPC::Run
We no longer depend on it for the core code, and tests are optional for users. Hopefully this makes this easier-to-install.
2016-06-17import: auto-update index when done
This prevents multiple update processes from stepping over each other while called under the lock, and also allows the new -watch process to update the index iff indexing was desired.
2016-06-17watch: quiet down rejected header matches
People may use this directive because they prefer to merge several mailing lists into one local mailbox, so there may be many messages and we should not needlessly clutter logs for this.
2016-06-17address: no commas in email addresses
We only do loose parsing, here, and I don't think I've seen a comma in a valid email address, so lets not support them.
2016-06-17search: increase limit for thread search
Some threads are easily over 100 messages, so the 50 limit is not enough. It is likely that 1000 messages is not enough, either, and we will need to tune our threading to handle more messages and supply options for configurability.
2016-06-17mda: support loading arbitrary filters
Give users some rope to do their own filtering.
2016-06-17TODO: remove cookies for colors
It would be too much of a burden for caching system when user-supplied CSS is more powerful.
2016-06-17scripts/dc-dlvr: ClamAV support via clamdscan
SpamAssassin often misses messages which contain viruses, so ClamAV should fill that gap nicely.
2016-06-17scripts/dc-dlvr: remove catchall account
Unfortunately, people screw up addresses enough and for this to be a real problem.
2016-06-17scripts/dc-dlvr: update copyright
2016-06-17watch: introduce watch directive
This will allow users to run importers off existing mail accounts where they may not have access to run -mda. Currently, we only support Maildirs, but IMAP ought to be doable.
2016-06-17filter: split out scrub method from delivery
We will scrub for importing archives, so ensure it is usable outside of the delivery routine.
2016-06-17searchidx: disable Email::MIME::ContentType::STRICT_PARAMS
Disable this since we handle imperfect data from an imperfect world.
2016-06-17msg_iter: support read-only elements
Apparently, it's possible to have read-only bodies in Email::MIME objects. Haven't gotten a chance to reliably reproduce it, though...
2016-06-17doc: update design_www.txt for reply view
Followup-to: 1365e185d817cdc2de04968c37f597d92226a13b ("view: inline message reply into message view")
2016-06-17README: various updates
We no longer scrub content, and instead reject things by default. Further reduce mentions of ssoma and minor formatting tweaks.
2016-06-15INSTALL: recommend Debian 8.5 for Xapian corruption fix
Debian 8.5 is out and fixes the Xapian corruption bug, so no need to recommend jessie-backports anymore. ref: https://www.debian.org/News/2016/20160604
2016-06-15unsubscribe: archive_url may be undefined
We'll show a nasty warning in the UI instead of triggering a perl warning about an undefined variable.
2016-06-15inbox: allow undef return value for base_url
It should be possible to serve the contents of a public-inbox over NNTP but not HTTP.