From ce6a365328b23f294e27b95f01b2782ca7e92e95 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 20 Apr 2016 16:51:17 +0200 Subject: [PATCH] Disambiguate socket API pathes on Windows with user name Addresses #3411 --- binary | 2 +- .../windows/OCUtil/RemotePathChecker.cpp | 16 ++++++++++++++-- src/gui/socketapi.cpp | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/binary b/binary index ac4225749..a56480559 160000 --- a/binary +++ b/binary @@ -1 +1 @@ -Subproject commit ac422574995d2339d98fff552f11450b18d7bcff +Subproject commit a56480559ddda3af36b63bb42cfc6cfe05ebc6db diff --git a/shell_integration/windows/OCUtil/RemotePathChecker.cpp b/shell_integration/windows/OCUtil/RemotePathChecker.cpp index 85b01350f..d03a38350 100644 --- a/shell_integration/windows/OCUtil/RemotePathChecker.cpp +++ b/shell_integration/windows/OCUtil/RemotePathChecker.cpp @@ -31,12 +31,24 @@ using namespace std; +#define BUFSIZE 512 + +std::wstring getUserName() { + DWORD len = BUFSIZE; + TCHAR buf[BUFSIZE]; + if (GetUserName(buf, &len)) { + return std::wstring(&buf[0], len); + } else { + return std::wstring(); + } +} // This code is run in a thread void RemotePathChecker::workerThreadLoop() { auto pipename = std::wstring(L"\\\\.\\pipe\\"); - pipename += L"ownCloud"; + pipename += L"ownCloud\\"; + pipename += getUserName(); bool connected = false; CommunicationSocket socket; @@ -241,4 +253,4 @@ RemotePathChecker::FileState RemotePathChecker::_StrToFileState(const std::wstri } return StateNone; -} \ No newline at end of file +} diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index 91887f003..06141684b 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -67,7 +67,8 @@ SocketApi::SocketApi(QObject* parent) if (Utility::isWindows()) { socketPath = QLatin1String("\\\\.\\pipe\\") - + QLatin1String("ownCloud"); + + QLatin1String("ownCloud") + '\\' + + QString::fromLocal8Bit(qgetenv("USERNAME")); // TODO: once the windows extension supports multiple // client connections, switch back to the theme name // See issue #2388