All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.2.1 - 2023-08-18
- Missing serialisation for
from-unix
andfrom-abstract
.
- Improve wording/grammar in
README
and manpage.
2.2.0 - 2023-08-16
- Missing header files for newer GCC versions, thanks to Varun Madiath.
- Use-after-free of blackhole working directory path.
- A few compiler warnings on unnecessary allocation of string literals.
- Deprecation warnings if rules are specified in YAML format.
- Unlink socket file before
bind
ifSO_REUSEADDR
is used. - Support for Linux abstract sockets.
- Support for matching an existing Unix domain socket or abstract socket.
stream
/datagram
aliases fortcp
/udp
socket types.- Flag to prevent unlinking of socket files when closing sockets.
- Rule files (
-f
) are now just a list of newline-separated rule (-r
) arguments instead of YAML files. - Improve and overhaul README and man page.
- Split build instructions into separate file.
- Include URL to README in usage if manpage is not being built.
- Turn into a Nix Flake.
- Improve serializer to be more robust in end-of-stream conditions.
- Bump requirements to require at least GCC version 9.
- Badges (eg. LGTM and build status) in README and Hydra.
- No longer prefer C library path over
RTLD_NEXT
.
2.1.4 - 2021-07-10
- Ordering between systemd socket file descriptor names and rules.
- Usage of C library path as discovered by Meson.
2.1.3 - 2020-06-01
- Pass linker version script to the linker instead of the compiler.
- Compile with
-fPIC
again (regression from version 2.1.2). - Out of bounds array access in
globpath
. - Handling of
epoll_ctl
calls (they're now replayed after replacing socket). - GCC 10 build errors and Clang warnings.
2.1.2 - 2020-05-27
- Support for glibc >= 2.30 by splitting preload library and main executable.
2.1.1 - 2019-09-20
- Segfault when using
accept()
oraccept4()
without a sockaddr buffer.
2.1.0 - 2019-06-21
- Support
AF_INET
andAF_INET6
sockets for systemd socket activation.
2.0.1 - 2019-02-26
- Unregister socket as soon as we know that no rule matches.
- The
encode_rules()
function is no longer needed because the serializer has been refactored in version 2.0.0.
2.0.0 - 2018-12-26
- Use right endian conversion functions in port matching.
- Pass
is_unix
to child socket onaccept
to prevent accidentally replacing an already converted Unix socket by a new Unix socket. The latter would be a socket that's not accepted, which would eventually lead to an error. - Correctly handle
setsockopts
used with other levels thanSOL_SOCKET
.
- New
ignore
rule option, which prevents conversion to Unix socket. - A way to increase the verbosity via the
-v
command line argument. - Reams of log messages in addition to the FATAL errors we had so far.
- Use Syslog format for logging if
stderr
is a socket. - Set
FD_CLOEXEC
on systemd socket file descriptors as soon as they're associated.
- Improve wording and add more descriptions in README and manpage.
- The implementation for fetching systemd sockets now no longer uses
libsystemd
, thus the build-time dependency is no longer required. - New serialiser for passing rules to the preloaded library in a more compact form instead of using YAML, so it's less likely that we'll hit the maximum stack size.
- Systemd sockets are now associated during rule initialisation and thus behave more predictable in complex setups.
1.2.0 - 2018-11-12
- Don't fail when building the manual with AsciiDoc and xmllint.
- Some long options (
--rule
,--rules-file
and--rules-data
) were ignored. - Manpage formatting is now more consistent.
- A new --version command line argument for showing version information.
1.1.1 - 2018-11-07
- Don't unlink target socket path if connect is used after bind.
1.1.0 - 2018-11-07
- Prevent closing file descriptors passed by systemd.
- Allow to specify port ranges.
- The initial release, which evolved from an early prototype specific to a certain use case into a more generic command line tool.