diff --git a/src/network/kernel/qtnetworkglobal_p.h b/src/network/kernel/qtnetworkglobal_p.h index d1452ac704..6468b516b2 100644 --- a/src/network/kernel/qtnetworkglobal_p.h +++ b/src/network/kernel/qtnetworkglobal_p.h @@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE enum { -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_QNX) PlatformSupportsAbstractNamespace = true #else PlatformSupportsAbstractNamespace = false diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp index 5840958350..b60f7d0ceb 100644 --- a/src/network/socket/qlocalserver_unix.cpp +++ b/src/network/socket/qlocalserver_unix.cpp @@ -239,6 +239,10 @@ bool QLocalServerPrivate::listen(qintptr socketDescriptor) QT_SOCKLEN_T len = sizeof(addr); memset(&addr, 0, sizeof(addr)); if (::getsockname(socketDescriptor, (sockaddr *)&addr, &len) == 0) { +#if defined(Q_OS_QNX) + if (addr.sun_path[0] == 0 && addr.sun_path[1] == 0) + len = SUN_LEN(&addr); +#endif if (QLocalSocketPrivate::parseSockaddr(addr, len, fullServerName, serverName, abstractAddress)) { QLocalServer::SocketOptions options = socketOptions.value(); diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp index ba699242fd..afefa0fd30 100644 --- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp @@ -1765,7 +1765,7 @@ void tst_QLocalSocket::verifyListenWithDescriptor() QLocalServer server; QVERIFY2(server.listen(listenSocket), "failed to start create QLocalServer with local socket"); -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_QNX) if (!bound) { QCOMPARE(server.serverName().isEmpty(), true); QCOMPARE(server.fullServerName().isEmpty(), true); @@ -1806,7 +1806,7 @@ void tst_QLocalSocket::verifyListenWithDescriptor_data() QTest::addColumn("bound"); QTest::newRow("normal") << QDir::tempPath() + QLatin1String("/testsocket") << false << true; -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_QNX) QTest::newRow("abstract") << QString::fromLatin1("abstractsocketname") << true << true; QTest::newRow("abstractwithslash") << QString::fromLatin1("abstractsocketwitha/inthename") << true << true; #endif