summaryrefslogtreecommitdiffstats
path: root/src/network/socket/qlocalsocket_p.h
diff options
context:
space:
mode:
authorPiotr Mikolajczyk <piotr.mikolajczyk@qt.io>2021-01-14 11:29:06 +0100
committerPiotr Mikolajczyk <piotr.mikolajczyk@qt.io>2021-04-01 06:57:04 +0100
commit2e3f48637e2e4fbd99424a98f361a0df277ea351 (patch)
tree274ad045334d025b87bb8973fb4afb47b6c3f8c9 /src/network/socket/qlocalsocket_p.h
parentaa84de1afa78cf4b63239b35a4b65f1c9c4eab6c (diff)
Linux: Add abstract address support for QLocal{Socket,Server}
Takes advantage of Linux's and Android's support for abstract namespace when binding sockets, which is independent of the filesystem (see man entry for unix domain sockets). To make QLocalServer and QLocalSocket use an abstract socket address, one needs to set the socket options to QLocalServer::AbstractNamespaceOption. Fixes: QTBUG-16090 Change-Id: Ia9f9c9cc1ac5c28f9d44b0a48d854a7cfbd39b11 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/socket/qlocalsocket_p.h')
-rw-r--r--src/network/socket/qlocalsocket_p.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h
index e68cc72f9d..a80c09b517 100644
--- a/src/network/socket/qlocalsocket_p.h
+++ b/src/network/socket/qlocalsocket_p.h
@@ -73,9 +73,12 @@ QT_REQUIRE_CONFIG(localserver);
# include <errno.h>
#endif
+struct sockaddr_un;
+
QT_BEGIN_NAMESPACE
#if !defined(Q_OS_WIN) || defined(QT_LOCALSOCKET_TCP)
+
class QLocalUnixSocket : public QTcpSocket
{
@@ -146,6 +149,9 @@ public:
void _q_connectToSocket();
void _q_abortConnectionAttempt();
void cancelDelayedConnect();
+ void describeSocket(qintptr socketDescriptor);
+ static bool parseSockaddr(const sockaddr_un &addr, uint len,
+ QString &fullServerName, QString &serverName, bool &abstractNamespace);
QSocketNotifier *delayConnect;
QTimer *connectTimer;
QString connectingName;
@@ -155,6 +161,8 @@ public:
QLocalSocket::LocalSocketState state;
QString serverName;
QString fullServerName;
+
+ Q_OBJECT_BINDABLE_PROPERTY(QLocalSocketPrivate, QLocalSocket::SocketOptions, socketOptions)
};
QT_END_NAMESPACE