Avoid multiple client sockets in pingpong bluetooth example

This commit guards against creating multiple client sockets if multiple
services are found. In addition the service scanning is stopped when
a service has been found and we start connecting a bluetooth socket.

Fixes: QTBUG-100289
Pick-to: 5.15 6.2 6.3
Change-Id: Iac2e7eaca17a186ac2d2f62e338be16911f08032
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
Juha Vuolle 2022-02-08 13:22:29 +02:00
parent bbaf941d54
commit 788c4980e6
1 changed files with 6 additions and 2 deletions

View File

@ -354,7 +354,12 @@ void PingPong::done()
void PingPong::addService(const QBluetoothServiceInfo &service)
{
setMessage("Service found. Setting parameters...");
if (m_serviceFound)
return;
m_serviceFound = true;
setMessage("Service found. Stopping discovery and creating connection...");
discoveryAgent->stop();
//! [Connecting the socket]
socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
socket->connectToService(service);
@ -363,7 +368,6 @@ void PingPong::addService(const QBluetoothServiceInfo &service)
connect(socket, &QBluetoothSocket::connected, this, &PingPong::serverConnected);
connect(socket, &QBluetoothSocket::disconnected, this, &PingPong::serverDisconnected);
//! [Connecting the socket]
m_serviceFound = true;
}
void PingPong::serviceScanError(QBluetoothServiceDiscoveryAgent::Error error)