about summary refs log tree commit homepage
path: root/t
DateCommit message (Collapse)
2016-04-11git: add support for qx wrapper
This lets us one-line git commands easily like ``, but without having to remember --git-dir or escape arguments.
2016-04-09filter: preserve Mail-Followup-To and Mail-Reply-To
Allow users to do wacky things here if they really wish... It's bad practice, but at least allow other readers to mock users of these headers :P
2016-04-05repobrowse: snapshot support for cgit compatibility
We currently do not display links to snapshots, but may in the future (optionally, like cgit). However, support snapshots for compatibility reasons in case people had cached URLs or auto-generated them somewhere. We won't natively support xz and bzip2 just yet, but will document (at least in comments) how to enable these expensive compression schemes via git-config(1). Also, support disabling certain archive types to twart URL guessing or old cached links from spiders burning bandwidth. In retrospect, enabling snapshots for my own cgit views was a bad idea since it wastes bandwidth from crawlers and is is often not useful for users with maintainer-built files (e.g. "configure" from "configure.ac" for autoconf, where only the latter is stored in git and the former is generated in release tarballs).
2016-04-05test: disable warning for Plack::Test::Impl
Not sure of a better way around this, but the Plack::Test manpage documents this variable so it should be supported.
2016-04-05examples/repobrowse.psgi: disable Chunked response by default
It seems incompatible with Starman and probably confuses other HTTP/1.0-only servers, too. Our -httpd will respect it and requires it for persistent connections. Followup-to: dca2724e0aeb ("examples: disable Chunked response in PSGI example")
2016-04-05tests: consolidate repobrowse + httpd integration
Use Plack::Test::ExternalServer to simplify our test code and prepare to add more tests for future changes. Add a check for patch generation while we're at it, since patch generation may use our internal "pi.async" API.
2016-04-05repobrowse: git fallback allows smart cloning
We can reuse the existing code for cloning ssoma repositories to serve normal git repos for repobrowse. Also, this finally adds a test to fallback to dumb cloning when http.uploadPack is disabled for the git repository to save CPU/memory on the host machine.
2016-04-05repobrowse: shorten env name to REPOBROWSE_CONFIG
...From PI_REPOBROWSE_CONFIG. The "PI_" prefix is a bit too long and "repobrowse" is nearly an independent project at this point from a user-perspective.
2016-04-05repobrowse: git commit is more callback driven
We'll be moving to Danga::Socket for giant diff generation in future commits. So this is a step towards being more callback-driven...
2016-04-05git: support an error tmpfile for stashing stderr output
This should allow us to avoid polluting stderr output when HTTP clients inevitably request broken revisions.
2016-04-05repobrowse: implement Atom feed
Mostly following cgit, except we do not serve redundant text-only output which wastes bandwidth and doesn't preserve pre-formatting layout which is critical to some messages.
2016-04-05repobrowse: commits with path redirect to root with anchor
We shall save clients the overhead of making extra HTTP requests to follow partial paths. This ought to improve cache hit effectiveness on both the server and client side by reducing the potential different pages we may set.
2016-04-05repobrowse: fix redirects with query string
We need to preserve the query string to avoid breakage.
2016-04-05repobrowse: display text/plain as UTF-8
We'll be UTF-8 imperialists for now and assume all of our textual output is UTF-8 for the benefit of browsers.
2016-04-05hval: routines for attribute escaping
We'll use HTML attributes + anchor links to link to filenames in coming commits.
2016-04-05rename PI_REPO_CONFIG => PI_REPOBROWSE_CONFIG
We want to use 'repobrowse' terminology consistently despite it being longer. Furthermore, "repo-config" is an old git command (nowadays git-config(1)) which may confuse some old git users.
2016-04-05repobrowse: redirect w/o trailing slashes for humans
For human-visible HTML pages, avoid the trailing slash as that can reduce cache hits in both the server (using varnish) and clients. Typical web browsers are all capable of following 301 redirects without difficulty or human interaction. We do not redirect for endpoints which may be consumed by automated tools as that may cause compatibility problems. For example, curl(1) does not automatically follow redirects and needs the "-L" flag to do so.
2016-04-05repobrowse: change Perl capitalization to "Repobrowse"
We mainly call it "repobrowse" (all lowercase), so do not imply it is two separate words by capitalizing "Browse".
2016-04-05t/git.t: add tests for detecting failures
We need to ensure failure detection works.
2016-04-05repobrowse: tree nav is consistent between blobs/trees
We use the same path: header at the top and allow jumping back to the tree when displaying blobs.
2016-04-05repobrowse: add "plain" endpoint for cgit URI compat
This is similar to the "blob" endpoint, except it shows trees as a directory.
2016-04-05git: add support for qx wrapper
This lets us one-line git commands easily like ``, but without having to remember --git-dir or escape arguments.
2016-04-05repobrowse: add git helper for unquoting
We need to parse diffs with all manner of funky file names :<
2016-03-12http: use Plack::HTTPParser for HTTP parsing
This allows us to reduce installation dependencies while retaining performance as it favors HTTP::Parser::XS when it is installed and available. PLACK_HTTP_PARSER_PP may be set to 1 to force a pure Perl parser for testing.
2016-03-06http: reject excessively large HTTP request bodies
We cannot risk using all of a users' disk space buffering gigantic requests. Use the defaults git gives us since we primarily host git repositories.
2016-03-06http: reject excessive headers
HTTP::Parser::XS::PP does not reject excessively large headers like the XS version. Ensure we reject headers over 16K since public-inbox should never need such large request headers.
2016-03-05daemon: sockname detects listeners correctly
This means we can avoid false-positives when inheriting multiple Unix domain sockets.
2016-03-05daemon: document optional Net::Server dependency
Non-socket activation users will want to install Net::Server for daemonization, pid file writing, and user/group switching.
2016-03-05t/httpd-corner: avoid clobbering existing FDs after fork
Due to the deterministic way reference counting works, we do not want to drop references to existing FDs even if we no longer need the glob reference; the actual FD is all we can pass through on exec.
2016-03-05t/httpd-corner: additional callback test
Just to ensure we hit the code path independently of WWW code.
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.