From 595c6abf9d2cb666f2502bbf89ab3a7052717027 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Thu, 28 Jul 2016 17:28:27 +0300 Subject: [PATCH] QLocalSocket/Tcp: open device before making a connection According to QLocalSocket's documentation, connectToServer() must initiate a connection attempt after opening the device. Otherwise, if a connection succeeds immediately, connected() signal will be emitted on closed device. So, this patch ensures that TCP-based implementation behaves correctly. Change-Id: I4cc9474815e091a1491a429a6dc17f9cf0154f58 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/network/socket/qlocalsocket_tcp.cpp | 2 +- tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp index c0140e574e..461ece837f 100644 --- a/src/network/socket/qlocalsocket_tcp.cpp +++ b/src/network/socket/qlocalsocket_tcp.cpp @@ -239,8 +239,8 @@ void QLocalSocket::connectToServer(OpenMode openMode) QLatin1String("QLocalSocket::connectToServer")); return; } - d->tcpSocket->connectToHost(QHostAddress::LocalHost, port, openMode); QIODevice::open(openMode); + d->tcpSocket->connectToHost(QHostAddress::LocalHost, port, openMode); } bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp index 6e55b15a18..33aceb9159 100644 --- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp @@ -190,6 +190,7 @@ private slots: void slotConnected() { QCOMPARE(state(), QLocalSocket::ConnectedState); + QVERIFY(isOpen()); } void slotDisconnected() {