[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Two KIO::AccessManager patches...
From: "Dawit A." <adawit () kde ! org>
Date: 2009-09-24 4:07:25
Message-ID: 200909240007.25714.adawit () kde ! org
[Download RAW message or body]
Patch #1:
The attached patch fixes KIO::AccessManager so that it sends the correct
content-type during post operations and addresses bug# 207438.
Patch #2:
Change AccessManagerReply to return the actual KIO error code when it cannot
be mapped directly into QNetworkReply::NetworkError.
["accessmanagerreply_p.patch" (text/x-patch)]
Index: kio/accessmanagerreply_p.cpp
===================================================================
--- kio/accessmanagerreply_p.cpp (revision 1026906)
+++ kio/accessmanagerreply_p.cpp (working copy)
@@ -158,7 +158,8 @@
void AccessManagerReply::jobDone(KJob *kJob)
{
- switch (kJob->error())
+ const int errcode = kJob->error();
+ switch (errcode)
{
case 0:
setError(QNetworkReply::NoError, kJob->errorText());
@@ -200,20 +201,20 @@
break;
case KIO::ERR_COULD_NOT_AUTHENTICATE:
setError(QNetworkReply::AuthenticationRequiredError, kJob->errorText());
- kDebug() << kJob->error();
+ kDebug() << errcode;
break;
case KIO::ERR_UNSUPPORTED_PROTOCOL:
case KIO::ERR_NO_SOURCE_PROTOCOL:
setError(QNetworkReply::ProtocolUnknownError, kJob->errorText());
- kDebug() << kJob->error();
+ kDebug() << errcode;
break;
case KIO::ERR_UNSUPPORTED_ACTION:
setError(QNetworkReply::ProtocolInvalidOperationError, \
kJob->errorText()); kDebug() << kJob->error();
break;
default:
- setError(QNetworkReply::UnknownNetworkError, errorString());
- kDebug() << kJob->error();
+ setError(static_cast<QNetworkReply::NetworkError>(QNetworkReply::ProtocolFailure \
+ errcode), errorString()); + kDebug() << errcode;
}
emit finished();
@@ -228,6 +229,7 @@
// temporary one assume code 302 which is most often used
if (q->attribute(QNetworkRequest::HttpStatusCodeAttribute).isNull())
q->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 302);
+
q->setAttribute(QNetworkRequest::RedirectionTargetAttribute, QUrl(url));
emit q->finished();
}
["accessmanager.patch" (text/x-patch)]
Index: kio/accessmanager.cpp
===================================================================
--- kio/accessmanager.cpp (revision 1026906)
+++ kio/accessmanager.cpp (working copy)
@@ -79,30 +79,22 @@
switch (op) {
case HeadOperation: {
kDebug() << "HeadOperation:" << req.url();
-
kioJob = KIO::mimetype(req.url(), KIO::HideProgressInfo);
-
break;
}
case GetOperation: {
kDebug() << "GetOperation:" << req.url();
-
kioJob = KIO::get(req.url(), KIO::NoReload, KIO::HideProgressInfo);
-
break;
}
case PutOperation: {
kDebug() << "PutOperation:" << req.url();
-
kioJob = KIO::put(req.url(), -1, KIO::HideProgressInfo);
-
break;
}
case PostOperation: {
kDebug() << "PostOperation:" << req.url();
-
kioJob = KIO::http_post(req.url(), outgoingData->readAll(), KIO::HideProgressInfo);
-
break;
}
default:
@@ -115,8 +107,14 @@
kioJob->addMetaData(d->metaDataForRequest(req));
- if ( op == PostOperation && !kioJob->metaData().contains("content-type"))
- kioJob->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded" );
+ if ( op == PostOperation && !kioJob->metaData().contains("content-type")) {
+ QVariant header = req.header(QNetworkRequest::ContentTypeHeader);
+ if (header.isValid())
+ kioJob->addMetaData("content-type",
+ QString::fromLatin1("Content-Type: %1").arg(header.toString()));
+ else
+ kioJob->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded");
+ }
return reply;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic