From bb6c9b368c4cc18d0ac4b6ee75275743e03d1169 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Wed, 14 Jul 2021 19:58:48 +0300 Subject: QLocalSocket/Unix: fix aborting the socket According to the documentation, calling abort() should immediately reset the socket to its initial state. This includes: - closing the file descriptor; - closing the QLocalSocket as an I/O device; - canceling a pending outgoing connection, if it exist; - reseting 'serverName' string. So, adding a call to close() resets the state entirely. Change-Id: I9c604b5187c6300b437d7aa4c2d06db03edacf21 Reviewed-by: Oswald Buddenhagen Reviewed-by: Edward Welbourne Reviewed-by: Timur Pocheptsov (cherry picked from commit d9c0af92bd893e1f6a0b4c627300ea96a73aba55) Reviewed-by: Qt Cherry-pick Bot --- src/network/socket/qlocalsocket_tcp.cpp | 1 + src/network/socket/qlocalsocket_unix.cpp | 1 + 2 files changed, 2 insertions(+) (limited to 'src') diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp index 2f0179f40a..03a45e85af 100644 --- a/src/network/socket/qlocalsocket_tcp.cpp +++ b/src/network/socket/qlocalsocket_tcp.cpp @@ -316,6 +316,7 @@ void QLocalSocket::abort() { Q_D(QLocalSocket); d->tcpSocket->abort(); + close(); } qint64 QLocalSocket::bytesAvailable() const diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp index 6fd17a6213..1bca5f76f8 100644 --- a/src/network/socket/qlocalsocket_unix.cpp +++ b/src/network/socket/qlocalsocket_unix.cpp @@ -408,6 +408,7 @@ void QLocalSocket::abort() { Q_D(QLocalSocket); d->unixSocket.abort(); + close(); } qint64 QLocalSocket::bytesAvailable() const -- cgit v1.2.3