diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-03-15 18:47:11 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-03-15 20:06:21 (GMT) |
commit | 59c7740c9d45a88713db20efbfcfbdaf3873b60c (patch) | |
tree | 94dd09982e3818ff3ec58fb345f9cacb0e3dec04 /src/plugins/bearer/symbian | |
parent | 86b1e68285a4dae855a5826f76728cee347d1af2 (diff) | |
download | Qt-59c7740c9d45a88713db20efbfcfbdaf3873b60c.zip Qt-59c7740c9d45a88713db20efbfcfbdaf3873b60c.tar.gz Qt-59c7740c9d45a88713db20efbfcfbdaf3873b60c.tar.bz2 |
Make creating sockets with an explicit network session thread safe
Added a mutex to QNetworkSessionPrivate
Lock the mutex in the symbian bearer plugin for functions that change
the validity of the RConnection.
Added factory functions to open an RSocket or RHostResolver, which lock
the mutex before the esock function calls. If there is no RConnection,
then KErrNotReady is returned (the same as when there is an RConnection
but it has not been started).
Task-number: QTBUG-18143
Reviewed-by: Markus Goetz
Diffstat (limited to 'src/plugins/bearer/symbian')
-rw-r--r-- | src/plugins/bearer/symbian/qnetworksession_impl.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp index 5325293..a9bd414 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp +++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp @@ -76,6 +76,7 @@ QNetworkSessionPrivateImpl::QNetworkSessionPrivateImpl(SymbianEngine *engine) void QNetworkSessionPrivateImpl::closeHandles() { + QMutexLocker lock(&mutex); // Cancel Connection Progress Notifications first. // Note: ConnectionNotifier must be destroyed before RConnection::Close() // => deleting ipConnectionNotifier results RConnection::CancelProgressNotification() @@ -317,6 +318,7 @@ QNetworkSession::SessionError QNetworkSessionPrivateImpl::error() const void QNetworkSessionPrivateImpl::open() { + QMutexLocker lock(&mutex); #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "open() called, session state is: " << state << " and isOpen is: " @@ -526,6 +528,7 @@ void QNetworkSessionPrivateImpl::close(bool allowSignals) void QNetworkSessionPrivateImpl::stop() { + QMutexLocker lock(&mutex); #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "stop() called, session state is: " << state << " and isOpen is : " |