diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2020-10-15 19:13:25 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-10-15 21:52:51 +0000 |
commit | 1b26e9f17cb0179b88a83310fae889d5232dcd47 (patch) | |
tree | 38d77d5720c8dd68f9154384b8f9355c6c3827d4 /src | |
parent | 52a7f472b06916e4f4d4f00a9ed0aede9a3e6816 (diff) |
QLocalSocket/Win: prevent writing to broken pipe
When a peer closes the connection, the device remains opened for reading
purposes. However, we should disable writing on disconnected socket.
Otherwise, if the user issues a write() call, a new pipe writer object
will be created and the write call occurs with invalid handle value.
Change-Id: Id136798c7663df1fce7ed0aa4e3c6f5c65218a11
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
(cherry picked from commit 53b4556332e95820622742e9be16281a77f9d337)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/network/socket/qlocalsocket_win.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index 48ffd87beb..6d82656583 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -207,6 +207,12 @@ qint64 QLocalSocket::readData(char *data, qint64 maxSize) qint64 QLocalSocket::writeData(const char *data, qint64 len) { Q_D(QLocalSocket); + if (!isValid()) { + d->error = OperationError; + d->errorString = tr("Socket is not connected"); + return -1; + } + if (len == 0) return 0; d->writeBuffer.append(data, len); |