summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNedim Hadzic <nhadzic@blackberry.com>2014-02-21 11:11:44 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-21 14:45:33 +0100
commit718e66ca7d568111f116101f979f5323e4f4e079 (patch)
tree78829764041fe410819834d2401e4684dd7730ab
parent97b7f024eacc63d5b54b0bbc1be25c3bf1e17498 (diff)
QBluetoothServer QNX closing error fix
In case socket was not defined error was emitted and it should not do anything when closing a socket. Resetting of d->activeSockets implemented. Task-number: QTBUG-36626 Change-Id: Id1f37c0019981ffb6d9b5fd00159c118d313f44c Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
-rw-r--r--src/bluetooth/qbluetoothserver_qnx.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/bluetooth/qbluetoothserver_qnx.cpp b/src/bluetooth/qbluetoothserver_qnx.cpp
index c7015683..9c6f9256 100644
--- a/src/bluetooth/qbluetoothserver_qnx.cpp
+++ b/src/bluetooth/qbluetoothserver_qnx.cpp
@@ -66,6 +66,8 @@ QBluetoothServerPrivate::~QBluetoothServerPrivate()
q->close();
__fakeServerPorts.remove(this);
ppsUnregisterControl(this);
+ qDeleteAll(activeSockets);
+ activeSockets.clear();
}
void QBluetoothServerPrivate::controlReply(ppsResult result)
@@ -131,17 +133,20 @@ void QBluetoothServerPrivate::controlEvent(ppsResult result)
void QBluetoothServer::close()
{
Q_D(QBluetoothServer);
- if (!d->socket) {
- d->m_lastError = UnknownError;
- emit error(d->m_lastError);
- return;
+ if (!d->activeSockets.isEmpty()) {
+ for (int i = 0; i < d->activeSockets.size(); i++)
+ d->activeSockets.at(i)->close();
+ qDeleteAll(d->activeSockets);
+ d->activeSockets.clear();
+ }
+ if (d->socket) {
+ d->socket->close();
+ delete d->socket;
+ d->socket = 0;
+ ppsSendControlMessage("deregister_server", 0x1101, d->m_uuid, QString(), QString(), 0);
+ // force active object (socket) to run and shutdown socket.
+ qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
}
- d->socket->close();
- delete d->socket;
- d->socket = 0;
- ppsSendControlMessage("deregister_server", 0x1101, d->m_uuid, QString(), QString(), 0);
- // force active object (socket) to run and shutdown socket.
- qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
}
bool QBluetoothServer::listen(const QBluetoothAddress &address, quint16 port)