summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer/symbian/qnetworksession_impl.cpp
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-06-28 12:08:45 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2011-06-28 13:13:26 (GMT)
commit9ceac782c62e889852bfc1f72840d838ba98ebff (patch)
tree160cd6be80b59a2b9d26d62e92132f7813fbef23 /src/plugins/bearer/symbian/qnetworksession_impl.cpp
parent705b0f958a6071341b10cbd51917e1378356491b (diff)
downloadQt-9ceac782c62e889852bfc1f72840d838ba98ebff.zip
Qt-9ceac782c62e889852bfc1f72840d838ba98ebff.tar.gz
Qt-9ceac782c62e889852bfc1f72840d838ba98ebff.tar.bz2
Fix KERN-EXEC 0 errors in symbian bearer plugin
The plugin was ignoring errors when opening a handle, and as a result crashed if the handle was invalid. Error checking / handle validity checks added. Task-number: QTBUG-18572 Reviewed-by: mread
Diffstat (limited to 'src/plugins/bearer/symbian/qnetworksession_impl.cpp')
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 791ebf2..5639c4f 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -476,6 +476,8 @@ TUint QNetworkSessionPrivateImpl::iapClientCount(TUint aIAPId) const
{
TRequestStatus status;
TUint connectionCount;
+ if (!iConnectionMonitor.Handle())
+ return 0;
iConnectionMonitor.GetConnectionCount(connectionCount, status);
User::WaitForRequest(status);
if (status.Int() == KErrNone) {
@@ -573,7 +575,8 @@ void QNetworkSessionPrivateImpl::stop()
#endif
if (!isOpen &&
publicConfig.isValid() &&
- publicConfig.type() == QNetworkConfiguration::InternetAccessPoint) {
+ publicConfig.type() == QNetworkConfiguration::InternetAccessPoint &&
+ iConnectionMonitor.Handle()) {
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - "
<< "since session is not open, using RConnectionMonitor to stop() the interface";
@@ -855,6 +858,8 @@ quint64 QNetworkSessionPrivateImpl::transferredData(TUint dataType) const
return 0;
}
+ if (!iConnectionMonitor.Handle())
+ return 0;
TUint count;
TRequestStatus status;
iConnectionMonitor.GetConnectionCount(count, status);
@@ -1497,6 +1502,8 @@ bool QNetworkSessionPrivateImpl::easyWlanTrueIapId(TUint32 &trueIapId) const
// Loop through all connections that connection monitor is aware
// and check for IAPs based on easy WLAN
+ if (!iConnectionMonitor.Handle())
+ return false;
TRequestStatus status;
TUint connectionCount;
iConnectionMonitor.GetConnectionCount(connectionCount, status);