summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-07-03 03:00:57 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-07-03 03:00:57 +0200
commit374b78b4ec186ff3a7aedc96b3a1306f3da7c852 (patch)
tree9bb063e3d540730ad2d9c0ea1f0aa13a4fe86347
parent1c76ffaf2cc77162ce8ee23d4604dc9925bef201 (diff)
parent9b7a4c10b67dd7d89ed30f1f94d8982dab47ded0 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
-rw-r--r--src/bluetooth/qlowenergycontroller_bluezdbus.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/bluetooth/qlowenergycontroller_bluezdbus.cpp b/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
index 8f001f92..16f03405 100644
--- a/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
+++ b/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
@@ -560,8 +560,12 @@ void QLowEnergyControllerPrivateBluezDBus::prepareNextJob()
void QLowEnergyControllerPrivateBluezDBus::onCharReadFinished(QDBusPendingCallWatcher *call)
{
- Q_ASSERT(jobPending);
- Q_ASSERT(!jobs.isEmpty());
+ if (!jobPending || jobs.isEmpty()) {
+ // this may happen when service disconnects before dbus watcher returns later on
+ qCWarning(QT_BT_BLUEZ) << "Aborting onCharReadFinished due to disconnect";
+ Q_ASSERT(state == QLowEnergyController::UnconnectedState);
+ return;
+ }
const GattJob nextJob = jobs.constFirst();
Q_ASSERT(nextJob.flags.testFlag(GattJob::CharRead));
@@ -604,8 +608,12 @@ void QLowEnergyControllerPrivateBluezDBus::onCharReadFinished(QDBusPendingCallWa
void QLowEnergyControllerPrivateBluezDBus::onDescReadFinished(QDBusPendingCallWatcher *call)
{
- Q_ASSERT(jobPending);
- Q_ASSERT(!jobs.isEmpty());
+ if (!jobPending || jobs.isEmpty()) {
+ // this may happen when service disconnects before dbus watcher returns later on
+ qCWarning(QT_BT_BLUEZ) << "Aborting onDescReadFinished due to disconnect";
+ Q_ASSERT(state == QLowEnergyController::UnconnectedState);
+ return;
+ }
const GattJob nextJob = jobs.constFirst();
Q_ASSERT(nextJob.flags.testFlag(GattJob::DescRead));
@@ -666,8 +674,12 @@ void QLowEnergyControllerPrivateBluezDBus::onDescReadFinished(QDBusPendingCallWa
void QLowEnergyControllerPrivateBluezDBus::onCharWriteFinished(QDBusPendingCallWatcher *call)
{
- Q_ASSERT(jobPending);
- Q_ASSERT(!jobs.isEmpty());
+ if (!jobPending || jobs.isEmpty()) {
+ // this may happen when service disconnects before dbus watcher returns later on
+ qCWarning(QT_BT_BLUEZ) << "Aborting onCharWriteFinished due to disconnect";
+ Q_ASSERT(state == QLowEnergyController::UnconnectedState);
+ return;
+ }
const GattJob nextJob = jobs.constFirst();
Q_ASSERT(nextJob.flags.testFlag(GattJob::CharWrite));
@@ -707,8 +719,12 @@ void QLowEnergyControllerPrivateBluezDBus::onCharWriteFinished(QDBusPendingCallW
void QLowEnergyControllerPrivateBluezDBus::onDescWriteFinished(QDBusPendingCallWatcher *call)
{
- Q_ASSERT(jobPending);
- Q_ASSERT(!jobs.isEmpty());
+ if (!jobPending || jobs.isEmpty()) {
+ // this may happen when service disconnects before dbus watcher returns later on
+ qCWarning(QT_BT_BLUEZ) << "Aborting onDescWriteFinished due to disconnect";
+ Q_ASSERT(state == QLowEnergyController::UnconnectedState);
+ return;
+ }
const GattJob nextJob = jobs.constFirst();
Q_ASSERT(nextJob.flags.testFlag(GattJob::DescWrite));