summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/network/socket/qlocalsocket_win.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp
index df319d2c1e9..5d0fdfb0238 100644
--- a/src/network/socket/qlocalsocket_win.cpp
+++ b/src/network/socket/qlocalsocket_win.cpp
@@ -337,6 +337,8 @@ void QLocalSocketPrivate::_q_pipeClosed()
return;
}
+ serverName.clear();
+ fullServerName.clear();
pipeReader->stop();
delete pipeWriter;
pipeWriter = nullptr;
@@ -403,11 +405,11 @@ void QLocalSocket::disconnectFromServer()
{
Q_D(QLocalSocket);
- if (bytesToWrite() != 0) {
+ if (bytesToWrite() == 0) {
+ d->_q_pipeClosed();
+ } else if (d->state != QLocalSocket::ClosingState) {
d->state = QLocalSocket::ClosingState;
emit stateChanged(d->state);
- } else {
- close();
}
}
@@ -444,8 +446,8 @@ void QLocalSocketPrivate::_q_bytesWritten(qint64 bytes)
QScopedValueRollback<bool> guard(emittedBytesWritten, true);
emit q->bytesWritten(bytes);
}
- if (state == QLocalSocket::ClosingState && pipeWriterBytesToWrite() == 0)
- q->close();
+ if (state == QLocalSocket::ClosingState)
+ q->disconnectFromServer();
}
qintptr QLocalSocket::socketDescriptor() const