summaryrefslogtreecommitdiffstats
path: root/src/network/kernel/qhostinfo.cpp
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-03-18 11:45:52 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2011-03-18 11:57:29 (GMT)
commite29e13ff537a92f7d2afe34893d8bae8a6788bed (patch)
treee422721af8c307ed101c60377ffa58efa0569149 /src/network/kernel/qhostinfo.cpp
parent0679abb6b4f85878cb64fce2089ba926e3b9400c (diff)
downloadQt-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.cpp10
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);
}