From kde-commits Sun Jan 31 23:04:49 2010 From: Dawit Alemayehu Date: Sun, 31 Jan 2010 23:04:49 +0000 To: kde-commits Subject: branches/KDE/4.4/kdelibs/kio/kio Message-Id: <1264979089.797853.4756.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=126497910010138 SVN commit 1083277 by adawit: Backport the cache header directive related fixes from trunk (r1083276). M +36 -28 accessmanager.cpp --- branches/KDE/4.4/kdelibs/kio/kio/accessmanager.cpp #1083276:1083277 @@ -163,10 +163,11 @@ if ( op == PostOperation && !kioJob->metaData().contains("content-type")) { QVariant header = req.header(QNetworkRequest::ContentTypeHeader); if (header.isValid()) - kioJob->addMetaData("content-type", + kioJob->addMetaData(QLatin1String("content-type"), QString::fromLatin1("Content-Type: %1").arg(header.toString())); else - kioJob->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded"); + kioJob->addMetaData(QLatin1String("content-type"), + QLatin1String("Content-Type: application/x-www-form-urlencoded")); } return reply; @@ -177,7 +178,7 @@ { KIO::MetaData metaData; - // Add the user-specified meta data first... + // Add any meta data specified within request... QVariant userMetaData = request.attribute (static_cast(MetaData)); if (userMetaData.isValid() && userMetaData.type() == QVariant::Map) { metaData += userMetaData.toMap(); @@ -185,45 +186,52 @@ metaData.insert("PropagateHttpHeader", "true"); - metaData.insert("UserAgent", request.rawHeader("User-Agent")); - request.setRawHeader("User-Agent", QByteArray()); + if (request.hasRawHeader("User-Agent")) { + metaData.insert("UserAgent", request.rawHeader("User-Agent")); + request.setRawHeader("User-Agent", QByteArray()); + } - metaData.insert("accept", request.rawHeader("Accept")); - request.setRawHeader("Accept", QByteArray()); + if (request.hasRawHeader("Accept")) { + metaData.insert("accept", request.rawHeader("Accept")); + request.setRawHeader("Accept", QByteArray()); + } + if (request.hasRawHeader("Referer")) { + metaData.insert("referrer", request.rawHeader("Referer")); + request.setRawHeader("Referer", QByteArray()); + } + + if (request.hasRawHeader("Content-Type")) { + metaData.insert("content-type", request.rawHeader("Content-Type")); + request.setRawHeader("Content-Type", QByteArray()); + } + request.setRawHeader("content-length", QByteArray()); request.setRawHeader("Connection", QByteArray()); + request.setRawHeader("If-None-Match", QByteArray()); + request.setRawHeader("If-Modified-Since", QByteArray()); - QString additionHeaders; - Q_FOREACH(const QByteArray &headerKey, request.rawHeaderList()) { - const QByteArray value = request.rawHeader(headerKey); - if (value.isNull()) - continue; + QStringList customHeaders; + Q_FOREACH(const QByteArray &key, request.rawHeaderList()) { + const QByteArray value = request.rawHeader(key); + if (value.length()) + customHeaders << (key + ": " + value); + } - // createRequest() checks later for existence "content-type" metadata - if (headerKey=="Content-Type") { - metaData.insert("content-type", value); - continue; - } + if (!customHeaders.isEmpty()) + metaData.insert("customHTTPHeader", customHeaders.join("\r\n")); - if (additionHeaders.length() > 0) { - additionHeaders += "\r\n"; - } - additionHeaders += headerKey + ": " + value; - } - metaData.insert("customHTTPHeader", additionHeaders); - // Append per request meta data, if any... - if (!requestMetaData.isEmpty()) + if (!requestMetaData.isEmpty()) { metaData += requestMetaData; + // Clear per request meta data... + requestMetaData.clear(); + } // Append per session meta data, if any... if (!sessionMetaData.isEmpty()) metaData += sessionMetaData; - // Clear per request meta data... - requestMetaData.clear(); - return metaData; }