summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-12-06 13:13:56 +0100
committerIvan Solovev <ivan.solovev@qt.io>2021-12-10 11:02:54 +0100
commitdce805d3c52c7b0b9fd76bde8b7f4ead8c17afa9 (patch)
treec014787a5e0e033c6020be679e50ad3398bab630
parent0ae45557bcc92e7f33eafd515d0024303c98f533 (diff)
downloadqtconnectivity-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.cpp15
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