diff options
author | Liang Qi <liang.qi@qt.io> | 2016-09-19 14:22:23 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-09-19 14:22:28 +0200 |
commit | 9d22c12fe4bc6b19c83aa6cf421b90dbeae5f045 (patch) | |
tree | 998c788fb0b17360df1bbd35e3e1d1c9fdbd38c5 /src/bluetooth/qbluetoothsocket_osx.mm | |
parent | ee177fa9cdabeca3252907dcbdfba1b28b324c2d (diff) | |
parent | aabce3a08d1a65f8abc4872bd91a6dfd45cf7fd6 (diff) |
Merge remote-tracking branch 'origin/5.7' into 5.8
Change-Id: Ia2ce8bf47d9156c550f5360b1422b50313854338
Diffstat (limited to 'src/bluetooth/qbluetoothsocket_osx.mm')
-rw-r--r-- | src/bluetooth/qbluetoothsocket_osx.mm | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/bluetooth/qbluetoothsocket_osx.mm b/src/bluetooth/qbluetoothsocket_osx.mm index 83c4e88a..75712868 100644 --- a/src/bluetooth/qbluetoothsocket_osx.mm +++ b/src/bluetooth/qbluetoothsocket_osx.mm @@ -79,9 +79,6 @@ QBluetoothSocketPrivate::~QBluetoothSocketPrivate() void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, quint16 port, QIODevice::OpenMode mode) { - // We have readwrite channels with IOBluetooth's channels. - Q_UNUSED(openMode) - Q_ASSERT_X(state == QBluetoothSocket::ServiceLookupState || state == QBluetoothSocket::UnconnectedState, Q_FUNC_INFO, "invalid state"); @@ -92,7 +89,7 @@ void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, txBuffer.clear(); IOReturn status = kIOReturnError; - // Set socket state on q_ptr will emit a signal, + // Setting socket state on q_ptr will emit a signal, // we'd like to avoid any signal until this function completes. const QBluetoothSocket::SocketState oldState = state; // To prevent other connectToService calls (from QBluetoothSocket): @@ -446,6 +443,14 @@ qint64 QBluetoothSocket::bytesToWrite() const void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, OpenMode openMode) { + // Report this problem early, potentially avoid device discovery: + if (socketType() == QBluetoothServiceInfo::UnknownProtocol) { + qCWarning(QT_BT_OSX) << Q_FUNC_INFO << "cannot connect with 'UnknownProtocol' type"; + d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_NETWORK_ERROR); + setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + if (state() != UnconnectedState && state() != ServiceLookupState) { qCWarning(QT_BT_OSX) << "called on a busy socket"; d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_CONNECT_IN_PROGRESS); @@ -475,6 +480,14 @@ void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, Op void QBluetoothSocket::connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, OpenMode openMode) { + // Report this problem early, avoid device discovery: + if (socketType() == QBluetoothServiceInfo::UnknownProtocol) { + qCWarning(QT_BT_OSX) << Q_FUNC_INFO << "cannot connect with 'UnknownProtocol' type"; + d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_NETWORK_ERROR); + setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + if (state() != QBluetoothSocket::UnconnectedState) { qCWarning(QT_BT_OSX) << "called on a busy socket"; d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_CONNECT_IN_PROGRESS); @@ -492,6 +505,13 @@ void QBluetoothSocket::connectToService(const QBluetoothAddress &address, const void QBluetoothSocket::connectToService(const QBluetoothAddress &address, quint16 port, OpenMode openMode) { + if (socketType() == QBluetoothServiceInfo::UnknownProtocol) { + qCWarning(QT_BT_OSX) << Q_FUNC_INFO << "cannot connect with 'UnknownProtocol' type"; + d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_NETWORK_ERROR); + setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + if (state() != QBluetoothSocket::UnconnectedState) { qCWarning(QT_BT_OSX) << "called on a busy socket"; d_ptr->errorString = QCoreApplication::translate(SOCKET, SOC_CONNECT_IN_PROGRESS); |