[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kio/kio
From: Dawit Alemayehu <adawit () kde ! org>
Date: 2010-05-25 21:18:14
Message-ID: 20100525211814.8AFC1AC8C0 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1130639 by adawit:
- When updating already running ioslave with new internal meta-data, make sure their
the previously set config data is not accidentally lost. This causes bug# 238832.
BUG:238832
M +37 -32 scheduler.cpp
M +0 -1 scheduler_p.h
--- trunk/KDE/kdelibs/kio/kio/scheduler.cpp #1130638:1130639
@@ -68,7 +68,7 @@
const QString &proxy , bool newSlave, const KIO::MetaData *config = 0);
// same reason as above
static Scheduler *scheduler();
-Slave *heldSlaveForJob(SimpleJob *job);
+static Slave *heldSlaveForJob(SimpleJob *job);
int SerialPicker::changedPrioritySerial(int oldSerial, int newPriority) const
@@ -569,18 +569,6 @@
return ret;
}
-void ProtoQueue::updateSlaveConfigFor(const QString& host)
-{
- Q_FOREACH(Slave *slave, allSlaves()) {
- if (slave->host() == host) {
- slave->setConfig(SlaveConfig::self()->configData(slave->protocol(), host));
- kDebug(7006) << "Updating configuration of" << slave->protocol()
- << "ioslave, pid=" << slave->slave_pid();
- }
- }
-}
-
-
//private slot
void ProtoQueue::startAJob()
{
@@ -709,6 +697,7 @@
Slave *heldSlaveForJob(KIO::SimpleJob *job);
void registerWindow(QWidget *wid);
+ MetaData metaDataFor(const QString &protocol, const QString &proxy, const KUrl &url);
void setupSlave(KIO::Slave *slave, const KUrl &url, const QString &protocol,
const QString &proxy, bool newSlave, const KIO::MetaData *config = 0);
@@ -983,9 +972,18 @@
if (jobPriv->m_internalMetaData.count()) {
kDebug(7006) << "Updating ioslaves with new internal metadata information";
ProtoQueue * queue = m_protocols.value(slave->protocol());
- if (queue)
- queue->updateSlaveConfigFor(slave->host());
+ if (queue) {
+ QListIterator<Slave*> it (queue->allSlaves());
+ while (it.hasNext()) {
+ Slave* runningSlave = it.next();
+ if (slave->host() == runningSlave->host()) {
+ slave->setConfig(metaDataFor(slave->protocol(), jobPriv->m_proxy, jobUrl));
+ kDebug(7006) << "Updated configuration of" << slave->protocol()
+ << "ioslave, pid=" << slave->slave_pid();
}
+ }
+ }
+ }
slave->setJob(0);
slave->disconnect(job);
}
@@ -1003,30 +1001,18 @@
schedulerPrivate->setupSlave(slave, url, protocol, proxy, newSlave, config);
}
-
-void SchedulerPrivate::setupSlave(KIO::Slave *slave, const KUrl &url, const QString &protocol,
- const QString &proxy , bool newSlave, const KIO::MetaData *config)
+MetaData SchedulerPrivate::metaDataFor(const QString &protocol, const QString &proxy, const KUrl &url)
{
- QString host = url.host();
- int port = url.port();
- if ( port == -1 ) // no port is -1 in QUrl, but in kde3 we used 0 and the kioslaves assume that.
- port = 0;
- QString user = url.user();
- QString passwd = url.pass();
-
- if (newSlave || slave->host() != host || slave->port() != port ||
- slave->user() != user || slave->passwd() != passwd) {
-
+ const QString host = url.host();
MetaData configData = SlaveConfig::self()->configData(protocol, host);
sessionData.configDataFor( configData, protocol, host );
-
configData["UseProxy"] = proxy;
- QString autoLogin = configData["EnableAutoLogin"].toLower();
- if ( autoLogin == "true" )
+ if ( configData.contains("EnableAutoLogin") &&
+ configData.value("EnableAutoLogin").compare("true", Qt::CaseInsensitive) == 0 )
{
NetRC::AutoLogin l;
- l.login = user;
+ l.login = url.user();
bool usern = (protocol == "ftp");
if ( NetRC::self()->lookup( url, l, usern) )
{
@@ -1042,8 +1028,27 @@
}
}
}
+
+ return configData;
+}
+
+void SchedulerPrivate::setupSlave(KIO::Slave *slave, const KUrl &url, const QString &protocol,
+ const QString &proxy , bool newSlave, const KIO::MetaData *config)
+{
+ int port = url.port();
+ if ( port == -1 ) // no port is -1 in QUrl, but in kde3 we used 0 and the kioslaves assume that.
+ port = 0;
+ const QString host = url.host();
+ const QString user = url.user();
+ const QString passwd = url.pass();
+
+ if (newSlave || slave->host() != host || slave->port() != port ||
+ slave->user() != user || slave->passwd() != passwd) {
+
+ MetaData configData = metaDataFor(protocol, proxy, url);
if (config)
configData += *config;
+
slave->setConfig(configData);
slave->setProtocol(url.protocol());
slave->setHost(host, port, user, passwd);
--- trunk/KDE/kdelibs/kio/kio/scheduler_p.h #1130638:1130639
@@ -146,7 +146,6 @@
KIO::Slave *createSlave(const QString &protocol, KIO::SimpleJob *job, const KUrl &url);
bool removeSlave (KIO::Slave *slave);
QList<KIO::Slave *> allSlaves() const;
- void updateSlaveConfigFor(const QString&);
ConnectedSlaveQueue m_connectedSlaveQueue;
private slots:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic