Work around proxy issue with webview by always setting a proxy
authorRoeland Jago Douma <roeland@famdouma.nl>
Thu, 31 Jan 2019 13:14:31 +0000 (14:14 +0100)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 31 Jan 2019 13:14:31 +0000 (14:14 +0100)
Just use the prefered http tcp socket proxy.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
src/gui/clientproxy.cpp
src/gui/wizard/webviewpage.cpp

index 11d456c25577b35883e831c146b5e848a0646141..c5ea310d492e8ffa35dadec8fe08a0548c7d3610 100644 (file)
@@ -74,29 +74,37 @@ void ClientProxy::setupQtProxyFromConfig()
     }
 
     switch (proxyType) {
-    case QNetworkProxy::NoProxy:
-        qCInfo(lcClientProxy) << "Set proxy configuration to use NO proxy";
-        QNetworkProxyFactory::setUseSystemConfiguration(false);
-        QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
-        break;
-    case QNetworkProxy::DefaultProxy:
-        qCInfo(lcClientProxy) << "Set proxy configuration to use system configuration";
-        QNetworkProxyFactory::setUseSystemConfiguration(true);
-        break;
-    case QNetworkProxy::Socks5Proxy:
-        proxy.setType(QNetworkProxy::Socks5Proxy);
-        qCInfo(lcClientProxy) << "Set proxy configuration to SOCKS5" << printQNetworkProxy(proxy);
-        QNetworkProxyFactory::setUseSystemConfiguration(false);
-        QNetworkProxy::setApplicationProxy(proxy);
-        break;
-    case QNetworkProxy::HttpProxy:
-        proxy.setType(QNetworkProxy::HttpProxy);
-        qCInfo(lcClientProxy) << "Set proxy configuration to HTTP" << printQNetworkProxy(proxy);
-        QNetworkProxyFactory::setUseSystemConfiguration(false);
-        QNetworkProxy::setApplicationProxy(proxy);
-        break;
-    default:
-        break;
+        case QNetworkProxy::NoProxy:
+            qCInfo(lcClientProxy) << "Set proxy configuration to use NO proxy";
+            QNetworkProxyFactory::setUseSystemConfiguration(false);
+            QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
+            break;
+        case QNetworkProxy::DefaultProxy:
+            qCInfo(lcClientProxy) << "Set proxy configuration to use the prefered system proxy for http tcp connections";
+            {
+                QNetworkProxyQuery query;
+                query.setProtocolTag("http");
+                query.setQueryType(QNetworkProxyQuery::TcpSocket);
+                auto proxies = QNetworkProxyFactory::proxyForQuery(query);
+                proxy = proxies.first();
+            }
+            QNetworkProxyFactory::setUseSystemConfiguration(false);
+            QNetworkProxy::setApplicationProxy(proxy);
+            break;
+        case QNetworkProxy::Socks5Proxy:
+            proxy.setType(QNetworkProxy::Socks5Proxy);
+            qCInfo(lcClientProxy) << "Set proxy configuration to SOCKS5" << printQNetworkProxy(proxy);
+            QNetworkProxyFactory::setUseSystemConfiguration(false);
+            QNetworkProxy::setApplicationProxy(proxy);
+            break;
+        case QNetworkProxy::HttpProxy:
+            proxy.setType(QNetworkProxy::HttpProxy);
+            qCInfo(lcClientProxy) << "Set proxy configuration to HTTP" << printQNetworkProxy(proxy);
+            QNetworkProxyFactory::setUseSystemConfiguration(false);
+            QNetworkProxy::setApplicationProxy(proxy);
+            break;
+        default:
+            break;
     }
 }
 
index f9deeb83f6649fc0c39aac39192814335528a347..8daa0f6841abc09c9971e0134bb038133da9c3ed 100644 (file)
@@ -29,15 +29,15 @@ WebViewPage::WebViewPage(QWidget *parent)
 
     connect(_webView, &WebView::urlCatched, this, &WebViewPage::urlCatched);
 
-    _useSystemProxy = QNetworkProxyFactory::usesSystemConfiguration();
+    //_useSystemProxy = QNetworkProxyFactory::usesSystemConfiguration();
 }
 
 WebViewPage::~WebViewPage() {
-    QNetworkProxyFactory::setUseSystemConfiguration(_useSystemProxy);
+    //QNetworkProxyFactory::setUseSystemConfiguration(_useSystemProxy);
 }
 
 void WebViewPage::initializePage() {
-    QNetworkProxy::setApplicationProxy(QNetworkProxy::applicationProxy());
+    //QNetworkProxy::setApplicationProxy(QNetworkProxy::applicationProxy());
 
     QString url;
     if (_ocWizard->registration()) {