summaryrefslogtreecommitdiffstats
path: root/src/network/socket/qlocalserver_unix.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-24 13:37:06 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-24 13:39:13 +0100
commit34aba4724f196e34ed02cf50073f41968f119bb6 (patch)
tree0ebdfcabda989ab76ee6de53c6461553c7a767a5 /src/network/socket/qlocalserver_unix.cpp
parentb86b2a742afae118bf974c82ba966ddb0cae4afb (diff)
parentb1cf07f495e10c93e53651ac03e46ebdaea0a97e (diff)
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: src/corelib/io/qiodevice.cpp src/plugins/bearer/linux_common/qofonoservice_linux.cpp src/plugins/bearer/linux_common/qofonoservice_linux_p.h src/plugins/platforms/android/qandroidplatformtheme.cpp src/tools/bootstrap/bootstrap.pro src/widgets/styles/qmacstyle_mac.mm Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
Diffstat (limited to 'src/network/socket/qlocalserver_unix.cpp')
-rw-r--r--src/network/socket/qlocalserver_unix.cpp54
1 files changed, 23 insertions, 31 deletions
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 149d89c000e..a615dcc7b63 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -90,13 +90,14 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName)
// Check any of the flags
if (socketOptions & QLocalServer::WorldAccessOption) {
- tempDir.reset(new QTemporaryDir(fullServerName));
+ QFileInfo serverNameFileInfo(fullServerName);
+ tempDir.reset(new QTemporaryDir(serverNameFileInfo.absolutePath() + QLatin1Char('/')));
if (!tempDir->isValid()) {
setError(QLatin1String("QLocalServer::listen"));
return false;
}
tempPath = tempDir->path();
- tempPath += QLatin1Char('/') + requestedServerName;
+ tempPath += QLatin1String("/s");
}
// create the unix socket
@@ -124,13 +125,6 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName)
}
::memcpy(addr.sun_path, tempPath.toLatin1().data(),
tempPath.toLatin1().size() + 1);
-
- if (-1 == ::fchmod(listenSocket, 0)) {
- setError(QLatin1String("QLocalServer::listen"));
- closeServer();
- return false;
- }
-
} else {
::memcpy(addr.sun_path, fullServerName.toLatin1().data(),
fullServerName.toLatin1().size() + 1);
@@ -160,30 +154,28 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName)
}
if (socketOptions & QLocalServer::WorldAccessOption) {
- mode_t mode = 000;
+ mode_t mode = 000;
- if (socketOptions & QLocalServer::UserAccessOption) {
- mode |= S_IRWXU;
- }
- if (socketOptions & QLocalServer::GroupAccessOption) {
- mode |= S_IRWXG;
- }
- if (socketOptions & QLocalServer::OtherAccessOption) {
- mode |= S_IRWXO;
- }
+ if (socketOptions & QLocalServer::UserAccessOption)
+ mode |= S_IRWXU;
- if (mode) {
- if (-1 == ::chmod(tempPath.toLatin1(), mode)) {
- setError(QLatin1String("QLocalServer::listen"));
- closeServer();
- return false;
- }
- }
- if (-1 == ::rename(tempPath.toLatin1(), fullServerName.toLatin1())){
- setError(QLatin1String("QLocalServer::listen"));
- closeServer();
- return false;
- }
+ if (socketOptions & QLocalServer::GroupAccessOption)
+ mode |= S_IRWXG;
+
+ if (socketOptions & QLocalServer::OtherAccessOption)
+ mode |= S_IRWXO;
+
+ if (::chmod(tempPath.toLatin1(), mode) == -1) {
+ setError(QLatin1String("QLocalServer::listen"));
+ closeServer();
+ return false;
+ }
+
+ if (::rename(tempPath.toLatin1(), fullServerName.toLatin1()) == -1) {
+ setError(QLatin1String("QLocalServer::listen"));
+ closeServer();
+ return false;
+ }
}
Q_ASSERT(!socketNotifier);