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 11:36:53 (GMT)
commit97512b51ca8addc4fe1f8b5a4f7af14a13d4fd83 (patch)
tree1f5b335d14f79de1c537b05f0c136db224ccddd3 /src/plugins/bearer
parentd0c0aaf859452349c5cd64cbdba4ebb722c7722f (diff)
downloadQt-97512b51ca8addc4fe1f8b5a4f7af14a13d4fd83.zip
Qt-97512b51ca8addc4fe1f8b5a4f7af14a13d4fd83.tar.gz
Qt-97512b51ca8addc4fe1f8b5a4f7af14a13d4fd83.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 759c86a..bbaf47b 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -1550,8 +1550,8 @@ void ConnectionProgressNotifier::StartNotifications()
{
if (!IsActive()) {
SetActive();
+ iConnection.ProgressNotification(iProgress, iStatus);
}
- iConnection.ProgressNotification(iProgress, iStatus);
}
void ConnectionProgressNotifier::StopNotifications()
@@ -1567,10 +1567,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));
}
}