summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-02-03 12:16:35 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2011-02-04 12:09:42 (GMT)
commit8fe811e14b6db6a9637a5bf6d276613786291762 (patch)
tree1e23b78e69072d703870e8f27e12e5ff4153f6be /src/plugins/bearer
parent231dcfc8b6a90c3a0ab4869e0a9ab45403fd9a8c (diff)
downloadQt-8fe811e14b6db6a9637a5bf6d276613786291762.zip
Qt-8fe811e14b6db6a9637a5bf6d276613786291762.tar.gz
Qt-8fe811e14b6db6a9637a5bf6d276613786291762.tar.bz2
Fix random crashes when bearer suddenly goes down
1. QNetworkSession being deleted from the closed signal caused data abort or E32User-CBase 49 panics. (both observed) 2. Potential E32User-CBase 46 panic in ConnectionProgressNotifier::StartNotifications() Reviewed-by: Aaron Tunney Reviewed-By: Markus Goetz Task-Number: QTBUG-17196
Diffstat (limited to 'src/plugins/bearer')
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 433eef6..741f8c5 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -1552,8 +1552,8 @@ void ConnectionProgressNotifier::StartNotifications()
{
if (!IsActive()) {
SetActive();
+ iConnection.ProgressNotification(iProgress, iStatus);
}
- iConnection.ProgressNotification(iProgress, iStatus);
}
void ConnectionProgressNotifier::StopNotifications()
@@ -1569,10 +1569,10 @@ void ConnectionProgressNotifier::DoCancel()
void ConnectionProgressNotifier::RunL()
{
if (iStatus == KErrNone) {
- QT_TRYCATCH_LEAVING(iOwner.handleSymbianConnectionStatusChange(iProgress().iStage, iProgress().iError));
-
SetActive();
iConnection.ProgressNotification(iProgress, iStatus);
+ // warning, this object may be deleted in the callback - do nothing after handleSymbianConnectionStatusChange
+ QT_TRYCATCH_LEAVING(iOwner.handleSymbianConnectionStatusChange(iProgress().iStage, iProgress().iError));
}
}