diff options
author | Max Kellermann <max@musicpd.org> | 2019-02-25 13:01:42 +0100 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2019-02-25 13:08:33 +0100 |
commit | 44422b2b2f0a0bf29ffadfac0814b9bcd17db564 (patch) | |
tree | 119cbf3fecf2a3b313a8b04d3225bcc6ebb280ff /src/event | |
parent | f10afd38b5b94c7767e00701337d8f6aa5bf5222 (diff) |
event/ServerSocket, config/Net: abstract socket support
Diffstat (limited to 'src/event')
-rw-r--r-- | src/event/ServerSocket.cxx | 16 | ||||
-rw-r--r-- | src/event/ServerSocket.hxx | 12 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx index 6f675dddc..73e070c9e 100644 --- a/src/event/ServerSocket.cxx +++ b/src/event/ServerSocket.cxx @@ -396,3 +396,19 @@ ServerSocket::AddPath(AllocatedPath &&path) #endif /* !HAVE_UN */ } + +#ifdef __linux__ + +void +ServerSocket::AddAbstract(const char *name) +{ + assert(name != nullptr); + assert(*name == '@'); + + AllocatedSocketAddress address; + address.SetLocal(name); + + AddAddress(std::move(address)); +} + +#endif diff --git a/src/event/ServerSocket.hxx b/src/event/ServerSocket.hxx index 22edff428..8a36dded7 100644 --- a/src/event/ServerSocket.hxx +++ b/src/event/ServerSocket.hxx @@ -99,6 +99,18 @@ public: */ void AddPath(AllocatedPath &&path); +#ifdef __linux__ + /** + * Add a listener on an abstract local socket (Linux specific). + * + * Throws on error. + * + * @param name the abstract socket name, starting with a '@' + * instead of a null byte + */ + void AddAbstract(const char *name); +#endif + /** * Add a socket descriptor that is accepting connections. After this * has been called, don't call server_socket_open(), because the |