[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kioslave/http
From: Dawit Alemayehu <adawit () kde ! org>
Date: 2010-12-23 6:48:47
Message-ID: 20101223064847.172153E1F1 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1208765 by adawit:
A correct version of the rr1208112 commit. This should not break existing \
behavior.
CCMAIL:ahartmetz@gmail.com
M +32 -18 http.cpp
M +1 -1 http.h
--- trunk/KDE/kdelibs/kioslave/http/http.cpp #1208764:1208765
@@ -2548,15 +2548,17 @@
return res;
}
-void HTTPProtocol::forwardHttpResponseHeader()
+void HTTPProtocol::forwardHttpResponseHeader(bool forwardImmediately)
{
- // Send the response header if it was requested
- if ( config()->readEntry("PropagateHttpHeader", false) )
- {
+ // Send the response header if it was requested...
+ if (!config()->readEntry("PropagateHttpHeader", false))
+ return;
+
setMetaData(QLatin1String("HTTP-Headers"), \
m_responseHeaders.join(QString(QLatin1Char('\n')))); +
+ if (forwardImmediately)
sendMetaData();
}
-}
bool HTTPProtocol::parseHeaderFromCache()
{
@@ -2589,7 +2591,10 @@
// this header comes from the cache, so the response must have been \
cacheable :) setCacheabilityMetadata(true);
kDebug(7113) << "Emitting mimeType" << m_mimeType;
+ forwardHttpResponseHeader(false);
mimeType(m_mimeType);
+ // IMPORTANT: Do not remove the call below or the http response \
headers will + // not be available to the application if this slave is \
put on hold. forwardHttpResponseHeader();
return true;
}
@@ -3488,15 +3493,6 @@
return parseHeaderFromCache();
}
- // Let the app know about the mime-type iff this is not
- // a redirection and the mime-type string is not empty.
- if (!m_isRedirection &&
- (!m_mimeType.isEmpty() || m_request.method == HTTP_HEAD) &&
- (m_isLoadingErrorPage || !authRequiresAnotherRoundtrip)) {
- kDebug(7113) << "Emitting mimetype " << m_mimeType;
- mimeType( m_mimeType );
- }
-
if (config()->readEntry("PropagateHttpHeader", false) ||
m_request.cacheTag.ioMode == WriteToCache) {
// store header lines if they will be used; note that the \
tokenizer removing @@ -3515,15 +3511,33 @@
prevLineEnd - \
prevLinePos)); prevLinePos = nextLinePos;
}
+
+ // IMPORTNAT: Do not remove this line because \
forwardHttpResponseHeader + // is called below. This line is added \
to make http response headers are + // available by the time the \
content mimetype information is transmitted + // to the job. If the \
line below is removed, the KIO-QNAM integration + // will not work \
properly when attempting to put ioslaves on hold. + \
setMetaData(QLatin1String("HTTP-Headers"), \
m_responseHeaders.join(QString(QLatin1Char('\n')))); }
- // Do not move send response header before any redirection as it seems
- // to screw up some sites. See BR# 150904.
+ // Let the app know about the mime-type iff this is not a redirection \
and + // the mime-type string is not empty.
+ if (!m_isRedirection &&
+ (!m_mimeType.isEmpty() || m_request.method == HTTP_HEAD) &&
+ (m_isLoadingErrorPage || !authRequiresAnotherRoundtrip)) {
+ kDebug(7113) << "Emitting mimetype " << m_mimeType;
+ mimeType( m_mimeType );
+ }
+
+ // Do not move the function call below before doing any redirection.
+ // Otherwise it might mess up some sites. See BR# 150904.
+ // IMPORTANT: Do not remove it either thinking it duplicates what is \
done + // above. Otherwise, the http response headers will not be \
available if + // this ioslave is put on hold.
forwardHttpResponseHeader();
- if (m_request.method == HTTP_HEAD) {
+ if (m_request.method == HTTP_HEAD)
return true;
- }
return !authRequiresAnotherRoundtrip; // return true if no more \
credentials need to be sent }
--- trunk/KDE/kdelibs/kioslave/http/http.h #1208764:1208765
@@ -331,7 +331,7 @@
void httpCloseConnection(); // Close connection
bool httpShouldCloseConnection(); // Check whether to keep or close the \
connection.
- void forwardHttpResponseHeader();
+ void forwardHttpResponseHeader(bool forwardImmediately = true);
// Helpers for readResponseHeader - fix common mimetype/content-encoding \
errors by webservers. void fixupResponseMimetype();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic