320 QList<QNetworkProxy> result;
324 QString hostname = query.url().host();
325 if (hostname ==
"localhost"_L1 || hostname.startsWith(
"localhost."_L1)
326 || (parsed.setAddress(hostname) && (parsed.isLoopback()))) {
327 result << QNetworkProxy(QNetworkProxy::NoProxy);
331 if (!applicationLevelProxyFactory) {
332 if (applicationLevelProxy
333 && applicationLevelProxy->type() != QNetworkProxy::DefaultProxy) {
334 result << *applicationLevelProxy;
335 }
else if (useSystemProxies) {
336 result = QNetworkProxyFactory::systemProxyForQuery(query);
342 result << QNetworkProxy(QNetworkProxy::NoProxy);
344 result << QNetworkProxy(QNetworkProxy::NoProxy);
350 result = applicationLevelProxyFactory->queryProxy(query);
351 if (result.isEmpty()) {
352 qWarning(
"QNetworkProxyFactory: factory %p has returned an empty result set",
353 applicationLevelProxyFactory);
354 result << QNetworkProxy(QNetworkProxy::NoProxy);
373 static const int defaults[] =
376 (
int(QNetworkProxy::ListeningCapability) |
377 int(QNetworkProxy::TunnelingCapability) |
378 int(QNetworkProxy::UdpTunnelingCapability) |
379 int(QNetworkProxy::SctpTunnelingCapability) |
380 int(QNetworkProxy::SctpListeningCapability)),
382 (
int(QNetworkProxy::TunnelingCapability) |
383 int(QNetworkProxy::ListeningCapability) |
384 int(QNetworkProxy::UdpTunnelingCapability) |
385 int(QNetworkProxy::HostNameLookupCapability)),
388 (
int(QNetworkProxy::ListeningCapability) |
389 int(QNetworkProxy::TunnelingCapability) |
390 int(QNetworkProxy::UdpTunnelingCapability) |
391 int(QNetworkProxy::SctpTunnelingCapability) |
392 int(QNetworkProxy::SctpListeningCapability)),
394 (
int(QNetworkProxy::TunnelingCapability) |
395 int(QNetworkProxy::CachingCapability) |
396 int(QNetworkProxy::HostNameLookupCapability)),
398 (
int(QNetworkProxy::CachingCapability) |
399 int(QNetworkProxy::HostNameLookupCapability)),
401 (
int(QNetworkProxy::CachingCapability) |
402 int(QNetworkProxy::HostNameLookupCapability)),
405 if (
int(type) < 0 ||
int(type) >
int(QNetworkProxy::FtpCachingProxy))
406 type = QNetworkProxy::DefaultProxy;
407 return QNetworkProxy::Capabilities(defaults[
int(type)]);
482QNetworkProxy::QNetworkProxy(ProxyType type,
const QString &hostName, quint16 port,
483 const QString &user,
const QString &password)
484 : d(
new QNetworkProxyPrivate(type, hostName, port, user, password))
489 globalNetworkProxy();
725void QNetworkProxy::setApplicationProxy(
const QNetworkProxy &networkProxy)
727 if (globalNetworkProxy()) {
729 if (networkProxy.type() == DefaultProxy)
730 globalNetworkProxy()->setApplicationProxy(QNetworkProxy::NoProxy);
732 globalNetworkProxy()->setApplicationProxy(networkProxy);
930template<>
void QSharedDataPointer<QNetworkProxyQueryPrivate>::detach()
932 if (d && d->ref.loadRelaxed() == 1)
934 QNetworkProxyQueryPrivate *x = (d ?
new QNetworkProxyQueryPrivate(*d)
935 :
new QNetworkProxyQueryPrivate);
937 if (d && !d->ref.deref())
1552 QDebugStateSaver saver(debug);
1553 debug.resetFormat().nospace();
1554 QNetworkProxy::ProxyType type = proxy.type();
1556 case QNetworkProxy::NoProxy:
1557 debug <<
"NoProxy ";
1559 case QNetworkProxy::DefaultProxy:
1560 debug <<
"DefaultProxy ";
1562 case QNetworkProxy::Socks5Proxy:
1563 debug <<
"Socks5Proxy ";
1565 case QNetworkProxy::HttpProxy:
1566 debug <<
"HttpProxy ";
1568 case QNetworkProxy::HttpCachingProxy:
1569 debug <<
"HttpCachingProxy ";
1571 case QNetworkProxy::FtpCachingProxy:
1572 debug <<
"FtpCachingProxy ";
1575 debug <<
"Unknown proxy " <<
int(type);
1578 debug <<
'"' << proxy.hostName() <<
':' << proxy.port() <<
"\" ";
1579 QNetworkProxy::Capabilities caps = proxy.capabilities();
1581 if (caps & QNetworkProxy::TunnelingCapability)
1582 scaps << QStringLiteral(
"Tunnel");
1583 if (caps & QNetworkProxy::ListeningCapability)
1584 scaps << QStringLiteral(
"Listen");
1585 if (caps & QNetworkProxy::UdpTunnelingCapability)
1586 scaps << QStringLiteral(
"UDP");
1587 if (caps & QNetworkProxy::CachingCapability)
1588 scaps << QStringLiteral(
"Caching");
1589 if (caps & QNetworkProxy::HostNameLookupCapability)
1590 scaps << QStringLiteral(
"NameLookup");
1591 if (caps & QNetworkProxy::SctpTunnelingCapability)
1592 scaps << QStringLiteral(
"SctpTunnel");
1593 if (caps & QNetworkProxy::SctpListeningCapability)
1594 scaps << QStringLiteral(
"SctpListen");
1595 debug <<
'[' << scaps.join(u' ') <<
']';
1601 QDebugStateSaver saver(debug);
1602 debug.resetFormat().nospace()
1604 <<
"type: " << proxyQuery.queryType()
1605 <<
", protocol: " << proxyQuery.protocolTag()
1606 <<
", peerPort: " << proxyQuery.peerPort()
1607 <<
", peerHostName: " << proxyQuery.peerHostName()
1608 <<
", localPort: " << proxyQuery.localPort()
1609 <<
", url: " << proxyQuery.url()