diff --git a/NEWS b/NEWS index 421e70da9..224a5521a 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ ver 0.22 (not yet released) ver 0.21.7 (not yet released) * require Meson 0.49.0 for native libgcrypt-config support +* fix build failure with -Dlocal_socket=false ver 0.21.6 (2019/03/17) * protocol diff --git a/doc/plugins.rst b/doc/plugins.rst index 4f3672b5b..f72cdfa70 100644 --- a/doc/plugins.rst +++ b/doc/plugins.rst @@ -873,7 +873,7 @@ It is highly recommended to configure a fixed format, because a stream cannot sw * - **port P** - Binds the HTTP server to the specified port. * - **bind_to_address ADDR** - - Binds the HTTP server to the specified address (IPv4, IPv6 or UNIX socket). Multiple addresses in parallel are not supported. + - Binds the HTTP server to the specified address (IPv4, IPv6 or local socket). Multiple addresses in parallel are not supported. * - **encoder NAME** - Chooses an encoder plugin. A list of encoder plugins can be found in the encoder plugin reference :ref:`encoder_plugins`. * - **max_clients MC** diff --git a/doc/protocol.rst b/doc/protocol.rst index bbe1a655b..c103efe64 100644 --- a/doc/protocol.rst +++ b/doc/protocol.rst @@ -721,7 +721,7 @@ run playlist plugins instead of the hard-coded simple `m3u` parser. They can access playlists in the music directory (relative path including the suffix), playlists in arbitrary location (absolute path including the suffix; -allowed only for clients that are connected via UNIX domain socket), or +allowed only for clients that are connected via local socket), or remote playlists (absolute URI with a supported scheme). :command:`listplaylist {NAME}` @@ -931,7 +931,7 @@ The music database This command may be used to list metadata of remote files (e.g. URI beginning with "http://" or "smb://"). - Clients that are connected via UNIX domain socket may + Clients that are connected via local socket may use this command to read the tags of an arbitrary local file (URI is an absolute path). @@ -1222,7 +1222,7 @@ Reflection :command:`config` Dumps configuration values that may be interesting for the client. This command is only permitted to "local" - clients (connected via UNIX domain socket). + clients (connected via local socket). The following response attributes are available: diff --git a/src/config/Net.cxx b/src/config/Net.cxx index afba81f9d..fce05aa71 100644 --- a/src/config/Net.cxx +++ b/src/config/Net.cxx @@ -29,10 +29,8 @@ ServerSocketAddGeneric(ServerSocket &server_socket, const char *address, unsigne server_socket.AddPort(port); } else if (address[0] == '/' || address[0] == '~') { server_socket.AddPath(ParsePath(address)); -#ifdef __linux__ } else if (address[0] == '@') { server_socket.AddAbstract(address); -#endif } else { server_socket.AddHost(address, port); } diff --git a/src/config/Net.hxx b/src/config/Net.hxx index 2b40d966c..b077f883e 100644 --- a/src/config/Net.hxx +++ b/src/config/Net.hxx @@ -23,14 +23,14 @@ class ServerSocket; /** - * Sets the address or unix socket of a ServerSocket instance + * Sets the address or local socket of a ServerSocket instance * There are three possible ways * 1) Set address to a valid ip address and specify port. * server_socket will listen on this address/port tuple. * 2) Set address to null and specify port. * server_socket will listen on ANY address on that port. - * 3) Set address to a path of a unix socket. port is ignored. - * server_socket will listen on this unix socket. + * 3) Set address to a path of a local socket. port is ignored. + * server_socket will listen on this local socket. * * Throws #std::runtime_error on error. * diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx index 73e070c9e..728f5fd2e 100644 --- a/src/event/ServerSocket.cxx +++ b/src/event/ServerSocket.cxx @@ -392,16 +392,23 @@ ServerSocket::AddPath(AllocatedPath &&path) #else /* !HAVE_UN */ (void)path; - throw std::runtime_error("UNIX domain socket support is disabled"); + throw std::runtime_error("Local socket support is disabled"); #endif /* !HAVE_UN */ } -#ifdef __linux__ - void ServerSocket::AddAbstract(const char *name) { +#if !defined(__linux__) + (void)name; + + throw std::runtime_error("Abstract sockets are only available on Linux"); +#elif !defined(HAVE_UN) + (void)name; + + throw std::runtime_error("Local socket support is disabled"); +#else assert(name != nullptr); assert(*name == '@'); @@ -409,6 +416,5 @@ ServerSocket::AddAbstract(const char *name) address.SetLocal(name); AddAddress(std::move(address)); -} - #endif +} diff --git a/src/event/ServerSocket.hxx b/src/event/ServerSocket.hxx index 8a36dded7..ec027b295 100644 --- a/src/event/ServerSocket.hxx +++ b/src/event/ServerSocket.hxx @@ -90,7 +90,7 @@ public: void AddHost(const char *hostname, unsigned port); /** - * Add a listener on a Unix domain socket. + * Add a listener on a local socket. * * Throws #std::runtime_error on error. * @@ -99,7 +99,6 @@ public: */ void AddPath(AllocatedPath &&path); -#ifdef __linux__ /** * Add a listener on an abstract local socket (Linux specific). * @@ -109,7 +108,6 @@ public: * instead of a null byte */ void AddAbstract(const char *name); -#endif /** * Add a socket descriptor that is accepting connections. After this diff --git a/src/net/SocketUtil.cxx b/src/net/SocketUtil.cxx index f2910e7a0..94ce47d0d 100644 --- a/src/net/SocketUtil.cxx +++ b/src/net/SocketUtil.cxx @@ -35,7 +35,7 @@ socket_bind_listen(int domain, int type, int protocol, throw MakeSocketError("Failed to create socket"); #ifdef HAVE_UN - if (domain == AF_UNIX) { + if (domain == AF_LOCAL) { /* Prevent access until right permissions are set */ fchmod(fd.Get(), 0); } diff --git a/src/net/SocketUtil.hxx b/src/net/SocketUtil.hxx index e27ae89b4..873ec4861 100644 --- a/src/net/SocketUtil.hxx +++ b/src/net/SocketUtil.hxx @@ -32,7 +32,7 @@ class SocketAddress; /** * Creates a socket listening on the specified address. This is a * shortcut for socket(), bind() and listen(). - * When a unix socket is created (domain == AF_UNIX), its + * When a local socket is created (domain == AF_LOCAL), its * permissions will be stripped down to prevent unauthorized * access. The caller is responsible to apply proper permissions * at a later point. diff --git a/src/net/ToString.cxx b/src/net/ToString.cxx index abfbd88d5..e9867d835 100644 --- a/src/net/ToString.cxx +++ b/src/net/ToString.cxx @@ -106,7 +106,7 @@ ToString(SocketAddress address) noexcept { #ifdef HAVE_UN if (address.GetFamily() == AF_LOCAL) - /* return path of UNIX domain sockets */ + /* return path of local socket */ return LocalAddressToString(*(const sockaddr_un *)address.GetAddress(), address.GetSize()); #endif diff --git a/test/RunChromaprint.cxx b/test/RunChromaprint.cxx index dfbca8586..b04bf9060 100644 --- a/test/RunChromaprint.cxx +++ b/test/RunChromaprint.cxx @@ -165,8 +165,8 @@ public: return GetCommand(); } - void SubmitReplayGain(const ReplayGainInfo *) {} - void SubmitMixRamp(MixRampInfo &&) {} + void SubmitReplayGain(const ReplayGainInfo *) override {} + void SubmitMixRamp(MixRampInfo &&) override {} }; void