summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2021-03-22 14:09:20 +0100
committerAndreas Buhr <andreas.buhr@qt.io>2021-03-23 20:21:20 +0100
commit5466df6f9b9237caba71a3ae323b931de1f7eda9 (patch)
tree24162fc6b6d8cad095ad346f12a30bd33d4bd828
parent1b07519f6ca912c0c6334b96d26c61fd8b216a6e (diff)
Always call setOpenMode before setSocketState
setSocketState emits signals and should thus be called last. I most code, setOpenMode is called before setSocketState. But in some occasions, setSocketState was called before setOpenMode. This patch introduces a consistent call order: setOpenMode before setSocketState. Change-Id: I07f33511c76fbd08c79050a3fcbc1e1dd72fff04 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 62da7abae76b78fdc9385a0d997f3483057cf37c)
-rw-r--r--src/bluetooth/qbluetoothsocket_bluez.cpp2
-rw-r--r--src/bluetooth/qbluetoothsocket_osx.mm4
-rw-r--r--src/bluetooth/qbluetoothsocket_win.cpp8
3 files changed, 8 insertions, 6 deletions
diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp
index f81580a6..2a0d77f2 100644
--- a/src/bluetooth/qbluetoothsocket_bluez.cpp
+++ b/src/bluetooth/qbluetoothsocket_bluez.cpp
@@ -689,8 +689,8 @@ bool QBluetoothSocketPrivateBluez::setSocketDescriptor(int socketDescriptor, QBl
connectWriteNotifier = new QSocketNotifier(socket, QSocketNotifier::Write, q);
QObject::connect(connectWriteNotifier, SIGNAL(activated(QSocketDescriptor)), this, SLOT(_q_writeNotify()));
- q->setSocketState(socketState);
q->setOpenMode(openMode);
+ q->setSocketState(socketState);
return true;
}
diff --git a/src/bluetooth/qbluetoothsocket_osx.mm b/src/bluetooth/qbluetoothsocket_osx.mm
index 7259aeb5..60825048 100644
--- a/src/bluetooth/qbluetoothsocket_osx.mm
+++ b/src/bluetooth/qbluetoothsocket_osx.mm
@@ -519,8 +519,8 @@ void QBluetoothSocketPrivate::channelOpenComplete()
Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)");
if (!isConnecting) {
- q_ptr->setSocketState(QBluetoothSocket::ConnectedState);
q_ptr->setOpenMode(openMode);
+ q_ptr->setSocketState(QBluetoothSocket::ConnectedState);
emit q_ptr->connected();
} else {
state = QBluetoothSocket::ConnectedState;
@@ -537,8 +537,8 @@ void QBluetoothSocketPrivate::channelClosed()
// (thus close/abort probably will not work).
if (!isConnecting) {
- q_ptr->setSocketState(QBluetoothSocket::UnconnectedState);
q_ptr->setOpenMode(QIODevice::NotOpen);
+ q_ptr->setSocketState(QBluetoothSocket::UnconnectedState);
emit q_ptr->readChannelFinished();
} else {
state = QBluetoothSocket::UnconnectedState;
diff --git a/src/bluetooth/qbluetoothsocket_win.cpp b/src/bluetooth/qbluetoothsocket_win.cpp
index 713fcbf8..12ad8094 100644
--- a/src/bluetooth/qbluetoothsocket_win.cpp
+++ b/src/bluetooth/qbluetoothsocket_win.cpp
@@ -133,8 +133,8 @@ void QBluetoothSocketPrivateWin::connectToServiceHelper(const QBluetoothAddress
const int error = ::WSAGetLastError();
if (result != SOCKET_ERROR || error == WSAEWOULDBLOCK) {
- q->setSocketState(QBluetoothSocket::ConnectingState);
q->setOpenMode(openMode);
+ q->setSocketState(QBluetoothSocket::ConnectingState);
} else {
errorString = qt_error_string(error);
q->setSocketError(QBluetoothSocket::UnknownSocketError);
@@ -341,10 +341,12 @@ void QBluetoothSocketPrivateWin::abort()
Q_Q(QBluetoothSocket);
const bool wasConnected = q->state() == QBluetoothSocket::ConnectedState;
- q->setSocketState(QBluetoothSocket::UnconnectedState);
if (wasConnected) {
q->setOpenMode(QIODevice::NotOpen);
+ q->setSocketState(QBluetoothSocket::UnconnectedState);
emit q->readChannelFinished();
+ } else {
+ q->setSocketState(QBluetoothSocket::UnconnectedState);
}
}
@@ -509,8 +511,8 @@ bool QBluetoothSocketPrivateWin::setSocketDescriptor(int socketDescriptor,
if (!createNotifiers())
return false;
- q->setSocketState(socketState);
q->setOpenMode(openMode);
+ q->setSocketState(socketState);
if (socketState == QBluetoothSocket::ConnectedState) {
connectWriteNotifier->setEnabled(true);
readNotifier->setEnabled(true);