diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2021-12-06 13:13:56 +0100 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2021-12-10 11:02:54 +0100 |
commit | dce805d3c52c7b0b9fd76bde8b7f4ead8c17afa9 (patch) | |
tree | c014787a5e0e033c6020be679e50ad3398bab630 | |
parent | 0ae45557bcc92e7f33eafd515d0024303c98f533 (diff) | |
download | qtconnectivity-dce805d3c52c7b0b9fd76bde8b7f4ead8c17afa9.tar.gz |
QBluetoothSocket Windows: fix localAddress and peerAddress
WinAPI returns the address with parentheses around it. QBluetoothAddress
constructor does not understand such form, so we need to explicitly
remove the parentheses.
Change-Id: Ie2665b3dbe7bd001160ba01aa1db9beb1b8d4d86
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
(cherry picked from commit aba20224710bf66c23909ef1d1f542eaeeeedbce)
Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi>
-rw-r--r-- | src/bluetooth/qbluetoothsocket_winrt.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/bluetooth/qbluetoothsocket_winrt.cpp b/src/bluetooth/qbluetoothsocket_winrt.cpp index f886dbfd..dc2da4ca 100644 --- a/src/bluetooth/qbluetoothsocket_winrt.cpp +++ b/src/bluetooth/qbluetoothsocket_winrt.cpp @@ -576,6 +576,17 @@ QString QBluetoothSocketPrivateWinRT::localName() const return device.name(); } +static QString fromWinApiAddress(HString address) +{ + // WinAPI returns address with parentheses around it. We need to remove + // them to convert to QBluetoothAddress. + QString addressStr(qt_QStringFromHString(address)); + if (addressStr.startsWith(QLatin1Char('(')) && addressStr.endsWith(QLatin1Char(')'))) { + addressStr = addressStr.mid(1, addressStr.size() - 2); + } + return addressStr; +} + QBluetoothAddress QBluetoothSocketPrivateWinRT::localAddress() const { if (!m_socketObject) @@ -591,7 +602,7 @@ QBluetoothAddress QBluetoothSocketPrivateWinRT::localAddress() const HString localAddress; hr = localHost->get_CanonicalName(localAddress.GetAddressOf()); Q_ASSERT_SUCCEEDED(hr); - return QBluetoothAddress(qt_QStringFromHString(localAddress)); + return QBluetoothAddress(fromWinApiAddress(std::move(localAddress))); } quint16 QBluetoothSocketPrivateWinRT::localPort() const @@ -648,7 +659,7 @@ QBluetoothAddress QBluetoothSocketPrivateWinRT::peerAddress() const HString remoteAddress; hr = remoteHost->get_CanonicalName(remoteAddress.GetAddressOf()); Q_ASSERT_SUCCEEDED(hr); - return QBluetoothAddress(qt_QStringFromHString(remoteAddress)); + return QBluetoothAddress(fromWinApiAddress(std::move(remoteAddress))); } quint16 QBluetoothSocketPrivateWinRT::peerPort() const |