3
0
Fork 0
forked from mirrors/nixpkgs

nixos/snapserver: use the correct bind address arguments

Snapserver expects the arguments `--tcp.bind_to_address` and
`--http.bind_to_address` instead of the `--tcp.address` (and http
equivalent) versions.

This caused the process to listen on `0.0.0.0` (for TCP and HTTP
sockets) regardless of the configuration value. It also never listend on
the IPv6 address `::` as our module system made the user believe.

This commit fixes the above issue and ensures that (at least for the TCP
socket) that our default `::` does indeed allow connections via IPv6
(to localhost aka ::1).
This commit is contained in:
Andreas Rammhold 2021-12-16 23:25:12 +01:00
parent a2e281f577
commit c9c93b0add
No known key found for this signature in database
GPG key ID: E432E410B5E48C86
2 changed files with 10 additions and 2 deletions

View file

@ -54,12 +54,12 @@ let
# tcp json rpc
++ [ "--tcp.enabled ${toString cfg.tcp.enable}" ]
++ optionals cfg.tcp.enable [
"--tcp.address ${cfg.tcp.listenAddress}"
"--tcp.bind_to_address ${cfg.tcp.listenAddress}"
"--tcp.port ${toString cfg.tcp.port}" ]
# http json rpc
++ [ "--http.enabled ${toString cfg.http.enable}" ]
++ optionals cfg.http.enable [
"--http.address ${cfg.http.listenAddress}"
"--http.bind_to_address ${cfg.http.listenAddress}"
"--http.port ${toString cfg.http.port}"
] ++ optional (cfg.http.docRoot != null) "--http.doc_root \"${toString cfg.http.docRoot}\"");

View file

@ -40,6 +40,7 @@ in {
};
};
};
environment.systemPackages = [ pkgs.snapcast ];
};
client = {
environment.systemPackages = [ pkgs.snapcast ];
@ -71,6 +72,13 @@ in {
"curl --fail http://localhost:${toString httpPort}/jsonrpc -d '{json.dumps(get_rpc_version)}'"
)
with subtest("test a ipv6 connection"):
server.execute("systemd-run --unit=snapcast-local-client snapclient -h ::1 -p ${toString port}")
server.wait_until_succeeds(
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
)
server.wait_until_succeeds("journalctl -o cat -u snapcast-local-client | grep -q 'buffer: ${toString bufferSize}'")
with subtest("test a connection"):
client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}")
server.wait_until_succeeds(