Index: http.cc
===================================================================
RCS file: /home/kde/kdelibs/kioslave/http/http.cc,v
retrieving revision 1.470.2.20
diff -u -r1.470.2.20 http.cc
--- http.cc 7 Dec 2002 16:17:53 -0000 1.470.2.20
+++ http.cc 4 Jul 2003 13:29:57 -0000
@@ -195,20 +195,33 @@
m_maxCacheAge = config()->readNumEntry("MaxCacheAge", DEFAULT_MAX_CACHE_AGE);
m_request.window = config()->readEntry("window-id");
- bool sendReferrer = config()->readBoolEntry("SendReferrer", true);
- if ( sendReferrer )
- m_request.referrer = metaData("referrer");
- else
- m_request.referrer = QString::null;
-
- if (!m_request.referrer.startsWith("http"))
+
+ m_request.referrer = QString::null;
+ if ( config()->readBoolEntry("SendReferrer", true) )
{
- if (m_request.referrer.startsWith("webdav"))
- m_request.referrer.replace(0, 6, "http");
- else
- m_request.referrer = QString::null;
+ KURL referrerURL = metaData("referrer");
+ if (referrerURL.isValid())
+ {
+ // Sanitize
+ QString protocol = referrerURL.protocol();
+ if (protocol.startsWith("webdav"))
+ {
+ protocol.replace(0, 6, "http");
+ referrerURL.setProtocol(protocol);
+ }
+
+ if ((protocol == "http") ||
+ ((protocol == "https") && ((m_protocol == "https") || (m_protocol == "webdavs")))
+ )
+ {
+ referrerURL.setRef(QString::null);
+ referrerURL.setUser(QString::null);
+ referrerURL.setPass(QString::null);
+ m_request.referrer = referrerURL.url();
+ }
+ }
}
-
+
if ( config()->readBoolEntry("SendLanguageSettings", true) )
{
m_request.charsets = config()->readEntry( "Charsets", "iso-8859-1" );