[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kio/kio
From: Michael Leupold <lemma () confuego ! org>
Date: 2009-04-17 16:28:38
Message-ID: 1239985718.325348.3606.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 955431 by mleupold:
Implement workaround so that kioslaves still work with an old kpasswdserver.
M +1 -1 passwdserverloop.cpp
M +74 -9 slavebase.cpp
--- trunk/KDE/kdelibs/kio/kio/passwdserverloop.cpp #955430:955431
@@ -71,7 +71,7 @@
{
Q_UNUSED(oldOwner);
- if (newOwner.isEmpty() && name == "org.kde.kpasswdserver") {
+ if (newOwner.isEmpty() && name == "org.kde.kded") {
exit(-1);
}
}
--- trunk/KDE/kdelibs/kio/kio/slavebase.cpp #955430:955431
@@ -72,6 +72,10 @@
#define KIO_DATA QByteArray data; QDataStream stream( &data, QIODevice::WriteOnly ); stream
#define KIO_FILESIZE_T(x) quint64(x)
+#define KPASSWDSERVER_SERVICE "org.kde.kded"
+#define KPASSWDSERVER_PATH "/modules/kpasswdserver"
+#define KPASSWDSERVER_INTERFACE "org.kde.KPasswdServer"
+
namespace KIO {
class SlaveBasePrivate {
@@ -827,9 +831,9 @@
kDebug(7019) << "window-id=" << windowId;
QDBusConnection conn(QDBusConnection::sessionBus());
- QDBusMessage pscall(QDBusMessage::createMethodCall("org.kde.kded",
- "/modules/kpasswdserver",
- "org.kde.KPasswdServer",
+ QDBusMessage pscall(QDBusMessage::createMethodCall(KPASSWDSERVER_SERVICE,
+ KPASSWDSERVER_PATH,
+ KPASSWDSERVER_INTERFACE,
"queryAuthInfoAsync"));
QDBusArgument arg;
arg << info;
@@ -846,13 +850,47 @@
// because the result signal has to be connected before. Else we might
// actually miss a result signal.
PasswdServerLoop loop;
- conn.connect("", "/modules/kpasswdserver", "org.kde.KPasswdServer",
+ conn.connect(KPASSWDSERVER_SERVICE, KPASSWDSERVER_PATH, KPASSWDSERVER_INTERFACE,
"queryAuthInfoAsyncResult", &loop,
SLOT(slotQueryResult(qlonglong, qlonglong, const KIO::AuthInfo&)));
QDBusReply<qlonglong> reply = conn.call(pscall, QDBus::Block);
if (!reply.isValid())
{
+
+ // backward compatibility for old kpasswdserver
+ // TODO: this should be removed when it's no longer needed (probably 4.5)
+ if (reply.error().type() == QDBusError::UnknownMethod) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << info;
+ QDBusMessage pscall2(QDBusMessage::createMethodCall(KPASSWDSERVER_SERVICE,
+ KPASSWDSERVER_PATH,
+ KPASSWDSERVER_INTERFACE,
+ "queryAuthInfo"));
+ pscall2 << data;
+ if (metaData("no-auth-prompt").toLower() == "true") {
+ pscall2 << QString(QLatin1String("<NoAuthPrompt>"));
+ } else {
+ pscall2 << errorMsg;
+ }
+ pscall2 << qlonglong(windowId) << SlaveBasePrivate::s_seqNr << qlonglong(userTimestamp);
+ QDBusMessage reply2 = conn.call(pscall2, QDBus::Block, INT_MAX);
+
+ if (reply2.type() == QDBusMessage::ReplyMessage) {
+ AuthInfo authResult;
+ QDataStream stream2(reply2.arguments().at(0).toByteArray());
+ stream2 >> authResult;
+ SlaveBasePrivate::s_seqNr = reply2.arguments().at(1).toLongLong();
+ if (!authResult.isModified()) {
+ return false;
+ }
+
+ info = authResult;
+ return true;
+ }
+ }
+
kWarning(7019) << "Can't communicate with kded_kpasswdserver (for queryAuthInfo)!";
kDebug(7019) << reply.error().name() << reply.error().message();
return false;
@@ -1205,9 +1243,9 @@
kDebug(7019) << "window =" << windowId << "url =" << info.url;
QDBusConnection conn(QDBusConnection::sessionBus());
- QDBusMessage pscall(QDBusMessage::createMethodCall("org.kde.kded",
- "/modules/kpasswdserver",
- "org.kde.KPasswdServer",
+ QDBusMessage pscall(QDBusMessage::createMethodCall(KPASSWDSERVER_SERVICE,
+ KPASSWDSERVER_PATH,
+ KPASSWDSERVER_INTERFACE,
"checkAuthInfoAsync"));
QDBusArgument arg;
arg << info;
@@ -1218,12 +1256,39 @@
// because the result signal has to be connected before. Else we might
// actually miss a result signal.
PasswdServerLoop loop;
- conn.connect("", "/modules/kpasswdserver", "org.kde.KPasswdServer",
+ conn.connect(KPASSWDSERVER_SERVICE, KPASSWDSERVER_PATH, KPASSWDSERVER_INTERFACE,
"checkAuthInfoAsyncResult", &loop,
SLOT(slotQueryResult(qlonglong, qlonglong, const KIO::AuthInfo&)));
QDBusReply<qlonglong> reply = conn.call(pscall, QDBus::Block);
if (!reply.isValid()) {
+
+ // backwards compatibility for old kpasswdserver
+ // TODO: this should be removed when it's no longer needed (probably 4.5)
+ if (reply.error().type() == QDBusError::UnknownMethod) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << info;
+ QDBusMessage pscall2(QDBusMessage::createMethodCall(KPASSWDSERVER_SERVICE,
+ KPASSWDSERVER_PATH,
+ KPASSWDSERVER_INTERFACE,
+ "checkAuthInfo"));
+ pscall2 << data << qlonglong(windowId) << qlonglong(userTimestamp);
+ QDBusReply<QByteArray> reply2 = conn.call(pscall2, QDBus::Block, INT_MAX);
+
+ if (reply2.isValid()) {
+ AuthInfo authResult;
+ QDataStream stream2(reply2.value());
+ stream2 >> authResult;
+ if (!authResult.isModified()) {
+ return false;
+ }
+
+ info = authResult;
+ return true;
+ }
+ }
+
kWarning(7019) << "Can't communicate with kded_kpasswdserver (for checkAuthInfo)!";
kDebug(7019) << reply.error().name() << reply.error().message();
return false;
@@ -1282,7 +1347,7 @@
QDataStream stream(¶ms, QIODevice::WriteOnly);
stream << info;
- QDBusInterface( "org.kde.kded", "/modules/kpasswdserver", "org.kde.KPasswdServer" ).
+ QDBusInterface(KPASSWDSERVER_SERVICE, KPASSWDSERVER_PATH, KPASSWDSERVER_INTERFACE).
call(QDBus::Block, "addAuthInfo", params, windowId);
return true;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic