diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-03-18 11:45:52 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-03-18 11:57:29 (GMT) |
commit | e29e13ff537a92f7d2afe34893d8bae8a6788bed (patch) | |
tree | e422721af8c307ed101c60377ffa58efa0569149 /src/network/kernel/qhostinfo.cpp | |
parent | 0679abb6b4f85878cb64fce2089ba926e3b9400c (diff) | |
download | Qt-e29e13ff537a92f7d2afe34893d8bae8a6788bed.zip Qt-e29e13ff537a92f7d2afe34893d8bae8a6788bed.tar.gz Qt-e29e13ff537a92f7d2afe34893d8bae8a6788bed.tar.bz2 |
Add explicit network session support for async QHostInfo
Pass the shared network session pointer into the QSymbianHostResolver
(which maintains a reference for its lifetime). This is used to open
the RHostResolver handle, in order to get a host resolver which is
associated with a particular session.
The session is obtained from the _q_networksession property of the
QAbstractSocket, as in the symbian socket engine
Reviewed-by: Markus Goetz
Diffstat (limited to 'src/network/kernel/qhostinfo.cpp')
-rw-r--r-- | src/network/kernel/qhostinfo.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 7a15a05..1ae0bbd 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -49,6 +49,7 @@ #include <qstringlist.h> #include <qthread.h> #include <qurl.h> +#include <private/qnetworksession_p.h> #ifdef Q_OS_UNIX # include <unistd.h> @@ -219,8 +220,15 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, } // cache is not enabled or it was not in the cache, do normal lookup +#ifndef QT_NO_BEARERMANAGEMENT + QSharedPointer<QNetworkSession> networkSession; + QVariant v(receiver->property("_q_networksession")); + if (v.isValid()) + networkSession = qvariant_cast< QSharedPointer<QNetworkSession> >(v); +#endif + QSymbianHostResolver *symbianResolver = 0; - QT_TRAP_THROWING(symbianResolver = new QSymbianHostResolver(name, id)); + QT_TRAP_THROWING(symbianResolver = new QSymbianHostResolver(name, id, networkSession)); QObject::connect(&symbianResolver->resultEmitter, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); manager->scheduleLookup(symbianResolver); } |