diff options
author | Jan Holesovsky <kendy@collabora.com> | 2020-06-12 12:19:50 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2020-06-12 12:53:07 +0200 |
commit | 9cfdba5f56c5da3a5e6b6f947a251647db367e4f (patch) | |
tree | dfeb46ace38df87a9b9d1c0affde49b84e7f7f63 /net | |
parent | 117bf1c351813d5aba65b3330c7eb9e5ed076c2c (diff) |
Snap needs a specific unix socket name.
Change-Id: I7fd816eb6d23df0f27e40f345181833dbe85e022
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96197
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/Socket.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/Socket.cpp b/net/Socket.cpp index ee76a5a1a..0d0b3ed0b 100644 --- a/net/Socket.cpp +++ b/net/Socket.cpp @@ -755,15 +755,22 @@ std::string LocalServerSocket::bind() { int rc; struct sockaddr_un addrunix; + + // snap needs a specific socket name + std::string socketAbstractUnixName(SOCKET_ABSTRACT_UNIX_NAME); + const char* snapInstanceName = std::getenv("SNAP_INSTANCE_NAME"); + if (snapInstanceName && snapInstanceName[0]) + socketAbstractUnixName = std::string("0snap.") + snapInstanceName + ".loolwsd-"; + do { std::memset(&addrunix, 0, sizeof(addrunix)); addrunix.sun_family = AF_UNIX; - std::memcpy(addrunix.sun_path, SOCKET_ABSTRACT_UNIX_NAME, sizeof(SOCKET_ABSTRACT_UNIX_NAME)); + std::memcpy(addrunix.sun_path, socketAbstractUnixName.c_str(), socketAbstractUnixName.length()); addrunix.sun_path[0] = '\0'; // abstract name std::string rand = Util::rng::getFilename(8); - memcpy(addrunix.sun_path + sizeof(SOCKET_ABSTRACT_UNIX_NAME) - 1, rand.c_str(), 8); + memcpy(addrunix.sun_path + socketAbstractUnixName.length(), rand.c_str(), 8); rc = ::bind(getFD(), (const sockaddr *)&addrunix, sizeof(struct sockaddr_un)); LOG_TRC("Bind to location " << std::string(&addrunix.sun_path[1]) << |