about summary refs log tree commit homepage
path: root/t
DateCommit message (Collapse)
2016-03-04daemon: support listening on Unix domain sockets
Listening on Unix domain sockets can be convenient for running behind reverse proxies, avoiding port conflicts, limiting access, or avoiding the overhead (if any) of TCP over loopback.
2016-03-03daemon: introduce host_with_port for identifying sockets
This allows us to share more code between daemons and avoids having to make additional syscalls for preparing REMOTE_HOST and REMOTE_PORT in the PSGI env in -httpd. This will also make supporting HTTP (and NNTP) over Unix sockets easier in a future commit.
2016-03-03t/*.t: use identifiable tempdir names
This should make identifiying leftover directories due to SIGKILL-ed tests easier.
2016-03-01linkify: do not capture trailing '.' or ';' in URLs
It seems common for users to end statements with URLs, while it is rare for a URL itself to end with a '.' or ';'. So make a guess and assume the URL was intended to not include the trailing '.' or ';'
2016-02-29fixup Plack-related requires
We do not need to load Plack::Request outside of WWW anymore.
2016-02-29t/init.t: avoid spewing directory names in output
This is a step towards having consistent, reproducible test output. (ugh, but each %hash usage screws that up).
2016-02-29t/search.t: use transactions to reduce I/O load
In case folks do not use eatmydata or tmpfs for testing, use transactions to reduce the number of fsync calls made and hopefully prevent drives from wearing out.
2016-02-28http: support graceful shutdown like nntp
HTTP responses may be long-running or requests may be slow or pipelined. Ensure we don't kill them off prematurely.
2016-02-28t/: remove unnecessary Dumper use
No point in loading Data::Dumper if we do not use it in the tests.
2016-02-27git: use built-in spawn implementation for vfork
This should reduce overhead of spawning git processes from our long-running httpd and nntpd servers.
2016-02-27initial spawn implementation using vfork
Under Linux, vfork maintains constant performance as parent process size increases. fork needs to prepare pages for copy-on-write, requiring a linear scan of the address space.
2016-02-23t/httpd-corner: test HTTP chunking with curl
Just in case my knowledge of chunking is wrong.
2016-02-23initial public-inbox-httpd implemenation
This is meant to provide an easy starting point for server admins. It provides a basic HTTP server for admins unfamiliar with configuring PSGI applications as well as being an identical interface for management as our nntpd implementation. This HTTP server may also be a generic Plack/PSGI server for existing Plack/PSGI applications.
2016-02-04t/cgi.t: fix broken test for dumb HTTP
This should not be dependent on what is in the users' $HOME config, oops.
2016-02-02www: support git cloning via dumb HTTP
This is enabled by default, for now. Smart HTTP cloning support will be added later, but it will be optional since it can be highly CPU and memory intensive.
2016-01-09www: fix redirection loops
Sometimes users forget trailing slashes; but we should not punish them with infinite loops.
2015-12-27t/plack.t: fix test *with* plack installed... oops
Fixes commit 83fedde4cde6539386c9d3ecf37fb99d74af8d93 ("tests: fixup requirements for tests")
2015-12-26tests: fixup requirements for tests
We should be able to run tests on bare bones systems more easily.
2015-12-25examples/public-inbox.psgi: make output chunky by default
HTTP/1.1 clients will want persistent connections and need to know response terminations.
2015-12-22rename 'GitCatFile' package to 'Git'
We'll be using it for more than just cat-file. Adding a `popen' API for internal use allows us to save a bunch of code in other places.
2015-12-22git: cat-file wrapper enhancements
The "cat_file" sub now allows a block to be passed for partial processing. Additionally, a new "check" method is added to retrieve only object metadata: (SHA-1 identifier, type, size)
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-09-30t/nntpd.t: additional tests for XHDR/HDR
More testing is good, especially since clients I use don't implement all the commands.
2015-09-30t/nntpd.t: simplify condition for response termination
Multiline responses must end with "\r\n.\r\n", so we won't break out early in case the OS doesn't support MSG_MORE.
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-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.
2015-09-22nntp: support YYYYMMDD dates for commands
RFC 3977 supports YYYYMMDD dates while retaining backwards compatibility for old YYMMDD dates.
2015-09-22t/nntpd.t: fix fcntl test to ensure no failures
We need to run the syscall before testing for its failure :x
2015-09-21t/nntpd.t: improve test runnability
The created socket FD number may not be 3 in the test, force it to be so inside the child process.
2015-09-20nntpd: support systemd FD inheritance + signals
Avoid depending on IO::Socket::INET if we can help it, we do not need to bloat ourselves with lot of that functionality.
2015-09-18read-only NNTP server
Implementing NEWNEWS, XHDR, XOVER efficiently will require additional caching on top of msgmap. This seems to work with lynx and slrnpull, haven't tried clients. DO NOT run in production, yet, denial-of-service vulnerabilities await!
2015-09-15msgmap: add message mapping via SQLite
This will allow us to maintain stable article numbers for an NNTP server independently of Xapian.
2015-09-06update copyright headers and email addresses
In the future, it should be possible to use this: git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \ UPDATE_COPYRIGHT_USE_INTERVALS=2 \ xargs /path/to/gnulib/build-aux/update-copyright
2015-09-03feed: use application/atom+xml for Content-Type
This is the correct Content-Type for Atom feeds, especially since we updated to use ".atom" as the suffix.
2015-09-03ExtMsg: 300 to external mailing list archives
Since cross-posting is inevitable, we shall link to external message archives for interopability.
2015-09-03search: disable Message-ID compression in Xapian
We'll continue to compress long Message-IDs in URLs (which we know about), but we will store entire Message-IDs in the Xapian database to facilitate ease-of-lookups in external databases.
2015-09-01completely revamp URL structure to shorten permalinks
This allows common /m/ links to be used without a prefix, saving 2 precious bytes for permalinks and raw messages. Old URLs continue to redirect.
2015-09-01www: root atom feed is "new.atom" and not "atom.xml"
The MIME type entry for Atom feed relies on "atom", so allow properly-configured static file servers to serve it with the correct Content-Type header.
2015-09-01implement per-thread Atom feeds
This allows users to subscribe to only a single thread with their feed reader without subscribing to the rest of the thread. Update our endpoint notes while we're at it.
2015-08-30search: do not index references and inreplyto terms
We no longer need them, as we can rely on index-time thread resolution and thread merging. This allows us to index less data and hopefully increase efficiency.
2015-08-27implement legacy redirects for old URLs
We should not break existing URLs. Redirect them to the newer, less-ambiguous URLs to improve cache hit ratios.
2015-08-27wire up to display non-suffixed Message-ID links
These URLs are preferable in case somebody decides to get cute and use a suffix we would've used to prevent others from linking to their message. The common /m/$MESSAGE_ID/ URLs are now 4 characters shorter so may fit better on terminals.
2015-08-27wire up shorter, less ambiguous URLs
We will prefer URLs without suffixes for now to avoid ambiguity in case a Message-ID ends with ".html", ".txt", ".mbox.gz" or any other suffix we may use. Static file compatibility is preserved by using a trailing slash as most servers can/will fall back to an index.html file in this case. For raw text files, we will follow gmane's lead with "/raw"
2015-08-25search: implement subject summarization
We ought to summarize subjects to avoid exploding line lengths in the web interface.
2015-08-25mid: mid_compressed => mid_compress
Consistently name mid_* functions as verbs.
2015-08-24view: refactor $state as a hash
Using hash means we no longer have to document and remember what every field does. The original array form was insane premature optimization and crazy. Who wrote that? Oh wait, I was on drugs :<
2015-08-23search: respect core.sharedRepository in for Xapian DB
Extend the purpose of core.sharedRepository to apply to the $GIT_DIR/public-inbox/xapian* directory.