This repository was archived by the owner on Jul 13, 2021. It is now read-only.
Open
Conversation
This helps to centralise the error handling and the onward call chain. This is preparation for adding systemd socket passing support
With this patch there is a single function which will create the listening socket. This patch is in preparation for adding system socket passing support which can be encapsulated in a similar function.
Adding systemd support allows spawning polipo in parallel with the services
that depend on polipo.
The caller (spawner) owns the sockets, then spawns polipo and tells polipo
which sockets it has to use. (Before this change, you'd have to spawn polipo,
ask it which sockets it's using, and only then spawn the services that depend
on polipo.)
With socket passing the listening socket is passed to polipo as file
descriptor 3 and the environment variables are set according to:
LISTEN_FDS=1
LISTEN_PID=[polipo pid]
before exec()ing polipo
Test cases consist of pairs of .header and .payload files. These are generated by capturing HTTP sessions with curl. If the data should be cached the files are placed in the expect_cache directory. If they shouldn't be cached they are placed in the expect_uncached directory.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch includes adding systemd socket activation support and a simple set of automated tests which rely on such support. These tests have already been useful for finding a long standing bug in polipo (see 100ed99).
I believe automated tests are a great way to make maintainership less intimidating as with a sufficiently developed test suite less domain knowledge is required to maintain the software. You could make the argument that the domain knowledge is then encoded in the tests.
Although this branch introduces systemd socket activation support it does not introduce any dependency on systemd, it just implements the LISTEN_FDS interface. This is a completely independent implementation of the systemd interface that avoids including sd_daemon.{c,h} so no systemd code is included. Indeed, I don't even use polipo with systemd, I just needed a way of passing an already existing listening socket to polipo so decided to re-use an existing interface for that purpose.