diff --git a/kdelibs-4.0.4-proxy.patch b/kdelibs-4.0.4-proxy.patch new file mode 100644 index 0000000..79c80bd --- /dev/null +++ b/kdelibs-4.0.4-proxy.patch @@ -0,0 +1,126 @@ +--- kioslave/http/http.cpp.orig 2008-04-30 21:00:26.000000000 +0700 ++++ kioslave/http/http.cpp 2008-05-14 16:46:43.000000000 +0700 +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -259,9 +260,11 @@ + // Do not reset the URL on redirection if the proxy + // URL, username or password has not changed! + KUrl proxy ( config()->readEntry("UseProxy") ); ++ QNetworkProxy::ProxyType proxyType = QNetworkProxy::NoProxy; + + if ( m_strProxyRealm.isEmpty() || !proxy.isValid() || + m_proxyURL.host() != proxy.host() || ++ m_proxyURL.port() != proxy.port() || + (!proxy.user().isNull() && proxy.user() != m_proxyURL.user()) || + (!proxy.pass().isNull() && proxy.pass() != m_proxyURL.pass()) ) + { +@@ -272,8 +275,22 @@ + kDebug(7113) << "Using proxy:" << m_bUseProxy + << "URL: " << m_proxyURL.url() + << "Realm: " << m_strProxyRealm; ++ ++ if ( m_bUseProxy ) ++ { ++ if ( m_proxyURL.protocol() == "socks" ) ++ proxyType = QNetworkProxy::Socks5Proxy; ++ else if ( isAutoSsl() ) ++ proxyType = QNetworkProxy::HttpProxy; ++ ++ m_request.proxyURL = proxy; + } ++ else ++ m_request.proxyURL = KUrl(); + ++ QNetworkProxy::setApplicationProxy(QNetworkProxy(proxyType,m_proxyURL.host(),m_proxyURL.port(),m_proxyURL.user(),m_proxyURL.pass())); ++ ++ } + m_bPersistentProxyConnection = config()->readEntry("PersistentProxyConnection", false); + kDebug(7113) << "Enable Persistent Proxy Connection: " + << m_bPersistentProxyConnection; +@@ -1903,7 +1920,7 @@ + kDebug(7113) << "Connection lost!"; + closeDown = true; + } +- else if ( m_request.method != HTTP_GET ) ++ else if ( m_request.method != HTTP_GET && m_request.method != HTTP_POST ) + { + closeDown = true; + } +@@ -1915,6 +1932,14 @@ + m_state.passwd != m_request.passwd) + closeDown = true; + } ++ else if ( m_state.doProxy || m_request.doProxy ) ++ { ++ if (m_state.proxyURL.host() != m_request.proxyURL.host() || ++ m_state.proxyURL.port() != m_request.proxyURL.port() || ++ m_state.proxyURL.user() != m_request.proxyURL.user() || ++ m_state.proxyURL.pass() != m_request.proxyURL.pass()) ++ closeDown = true; ++ } + else + { + // Keep the connection to the proxy. +@@ -1933,19 +1958,26 @@ + m_state.user = m_request.user; + m_state.passwd = m_request.passwd; + m_state.doProxy = m_request.doProxy; ++ m_state.proxyURL = m_request.proxyURL; + } + + bool HTTPProtocol::httpOpenConnection() + { + int errCode; + QString errMsg; ++ bool connResult; + + kDebug(7113); + + setBlocking( true ); + +- if ( !connectToHost(m_protocol, m_state.hostname, m_state.port ) ) +- return false; ++ if ( m_state.doProxy && !isAutoSsl() && m_proxyURL.protocol() != "socks") ++ connResult = connectToHost(m_proxyURL.protocol(), m_proxyURL.host(), m_proxyURL.port() ); ++ else ++ connResult = connectToHost(m_protocol, m_state.hostname, m_state.port ); ++ ++ if ( connResult ) ++ { + + #if 0 // QTcpSocket doesn't support this + // Set our special socket option!! +@@ -1955,7 +1987,8 @@ + m_bFirstRequest = true; + + connected(); +- return true; ++ } ++ return connResult; + } + + +--- kioslave/http/http.h.orig 2008-01-29 15:20:03.000000000 +0600 ++++ kioslave/http/http.h 2008-05-07 17:26:45.000000000 +0700 +@@ -83,6 +83,7 @@ + QString user; + QString passwd; + bool doProxy; ++ KUrl proxyURL; + }; + + /** DAV-specific request elements for the current connection **/ +@@ -145,6 +146,7 @@ + QString id; + DAVRequest davData; + bool doProxy; ++ KUrl proxyURL; + bool allowCompressedPage; + bool disablePassDlg; + bool bNoAuth; // Do not authenticate