[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/kdecore/network
From: Thiago Macieira <thiago () kde ! org>
Date: 2005-03-18 3:24:10
Message-ID: 20050318032410.1CBCF16DE8 () office ! kde ! org
[Download RAW message or body]
CVS commit by thiago:
Fix the bug that made the IPv6 blacklist not work where it was most
wanted: in kioslaves. They don't have a kapp pointer...
To be backported.
CCBUG:100777
M +18 -5 kresolverstandardworkers.cpp 1.18
--- kdelibs/kdecore/network/kresolverstandardworkers.cpp #1.17:1.18
@@ -77,8 +77,21 @@ static bool hasIPv6()
// blacklist management
+static QMutex blacklistMutex; // KDE4: change to a QReadWriteLock
QStringList KBlacklistWorker::blacklist;
void KBlacklistWorker::init()
{
+ // HACK!
+ // FIXME KDE4: How do I detect there is an instance, without triggering
+ // its creation or an assertion fault?
+ if (!KGlobal::_instance)
+ return;
+
+ static bool beenhere = false;
+
+ if (beenhere)
+ return;
+
+ beenhere = true;
loadBlacklist();
}
@@ -86,7 +99,5 @@ void KBlacklistWorker::init()
void KBlacklistWorker::loadBlacklist()
{
- if (!kapp)
- return;
-
+ QMutexLocker locker(&blacklistMutex);
QStringList filelist = KGlobal::dirs()->findAllResources("config", "ipv6blacklist");
@@ -123,4 +134,6 @@ void KBlacklistWorker::loadBlacklist()
bool KBlacklistWorker::isBlacklisted(const QString& host)
{
+ KBlacklistWorker::init();
+
// empty hostnames cannot be blacklisted
if (host.isEmpty())
@@ -130,4 +143,6 @@ bool KBlacklistWorker::isBlacklisted(con
QString ascii = QString::fromLatin1(KResolver::domainToAscii(host));
+ QMutexLocker locker(&blacklistMutex);
+
// now find out if this hostname is present
QStringList::ConstIterator it = blacklist.constBegin(),
@@ -1005,6 +1020,4 @@ bool KGetAddrinfoWorker::wantThis(int fa
void KNetwork::Internal::initStandardWorkers()
{
- KBlacklistWorker::init();
-
//KResolverWorkerFactoryBase::registerNewWorker(new KResolverWorkerFactory<KBlacklistWorker>);
KResolverWorkerFactoryBase::registerNewWorker(new KResolverWorkerFactory<KStandardWorker>);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic