diff options
author | Nedim Hadzic <nhadzic@blackberry.com> | 2014-02-21 11:11:44 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-21 14:45:33 +0100 |
commit | 718e66ca7d568111f116101f979f5323e4f4e079 (patch) | |
tree | 78829764041fe410819834d2401e4684dd7730ab | |
parent | 97b7f024eacc63d5b54b0bbc1be25c3bf1e17498 (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.cpp | 25 |
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) |