321 QList<QNetworkProxy> result;
325 QString hostname = query.url().host();
326 if (hostname ==
"localhost"_L1 || hostname.startsWith(
"localhost."_L1)
327 || (parsed.setAddress(hostname) && (parsed.isLoopback()))) {
328 result << QNetworkProxy(QNetworkProxy::NoProxy);
332 if (!applicationLevelProxyFactory) {
333 if (applicationLevelProxy
334 && applicationLevelProxy->type() != QNetworkProxy::DefaultProxy) {
335 result << *applicationLevelProxy;
336 }
else if (useSystemProxies) {
337 result = QNetworkProxyFactory::systemProxyForQuery(query);
343 result << QNetworkProxy(QNetworkProxy::NoProxy);
345 result << QNetworkProxy(QNetworkProxy::NoProxy);
351 result = applicationLevelProxyFactory->queryProxy(query);
352 if (result.isEmpty()) {
353 qWarning(
"QNetworkProxyFactory: factory %p has returned an empty result set",
354 applicationLevelProxyFactory);
355 result << QNetworkProxy(QNetworkProxy::NoProxy);
374 static const int defaults[] =
377 (
int(QNetworkProxy::ListeningCapability) |
378 int(QNetworkProxy::TunnelingCapability) |
379 int(QNetworkProxy::UdpTunnelingCapability) |
380 int(QNetworkProxy::SctpTunnelingCapability) |
381 int(QNetworkProxy::SctpListeningCapability)),
383 (
int(QNetworkProxy::TunnelingCapability) |
384 int(QNetworkProxy::ListeningCapability) |
385 int(QNetworkProxy::UdpTunnelingCapability) |
386 int(QNetworkProxy::HostNameLookupCapability)),
389 (
int(QNetworkProxy::ListeningCapability) |
390 int(QNetworkProxy::TunnelingCapability) |
391 int(QNetworkProxy::UdpTunnelingCapability) |
392 int(QNetworkProxy::SctpTunnelingCapability) |
393 int(QNetworkProxy::SctpListeningCapability)),
395 (
int(QNetworkProxy::TunnelingCapability) |
396 int(QNetworkProxy::CachingCapability) |
397 int(QNetworkProxy::HostNameLookupCapability)),
399 (
int(QNetworkProxy::CachingCapability) |
400 int(QNetworkProxy::HostNameLookupCapability)),
402 (
int(QNetworkProxy::CachingCapability) |
403 int(QNetworkProxy::HostNameLookupCapability)),
406 if (
int(type) < 0 ||
int(type) >
int(QNetworkProxy::FtpCachingProxy))
407 type = QNetworkProxy::DefaultProxy;
408 return QNetworkProxy::Capabilities(defaults[
int(type)]);
483QNetworkProxy::QNetworkProxy(ProxyType type,
const QString &hostName, quint16 port,
484 const QString &user,
const QString &password)
485 : d(
new QNetworkProxyPrivate(type, hostName, port, user, password))
490 globalNetworkProxy();
726void QNetworkProxy::setApplicationProxy(
const QNetworkProxy &networkProxy)
728 if (globalNetworkProxy()) {
730 if (networkProxy.type() == DefaultProxy)
731 globalNetworkProxy()->setApplicationProxy(QNetworkProxy::NoProxy);
733 globalNetworkProxy()->setApplicationProxy(networkProxy);
931template<>
void QSharedDataPointer<QNetworkProxyQueryPrivate>::detach()
933 if (d && d->ref.loadRelaxed() == 1)
935 QNetworkProxyQueryPrivate *x = (d ?
new QNetworkProxyQueryPrivate(*d)
936 :
new QNetworkProxyQueryPrivate);
938 if (d && !d->ref.deref())
1553 QDebugStateSaver saver(debug);
1554 debug.resetFormat().nospace();
1555 QNetworkProxy::ProxyType type = proxy.type();
1557 case QNetworkProxy::NoProxy:
1558 debug <<
"NoProxy ";
1560 case QNetworkProxy::DefaultProxy:
1561 debug <<
"DefaultProxy ";
1563 case QNetworkProxy::Socks5Proxy:
1564 debug <<
"Socks5Proxy ";
1566 case QNetworkProxy::HttpProxy:
1567 debug <<
"HttpProxy ";
1569 case QNetworkProxy::HttpCachingProxy:
1570 debug <<
"HttpCachingProxy ";
1572 case QNetworkProxy::FtpCachingProxy:
1573 debug <<
"FtpCachingProxy ";
1576 debug <<
"Unknown proxy " <<
int(type);
1579 debug <<
'"' << proxy.hostName() <<
':' << proxy.port() <<
"\" ";
1580 QNetworkProxy::Capabilities caps = proxy.capabilities();
1582 if (caps & QNetworkProxy::TunnelingCapability)
1583 scaps << QStringLiteral(
"Tunnel");
1584 if (caps & QNetworkProxy::ListeningCapability)
1585 scaps << QStringLiteral(
"Listen");
1586 if (caps & QNetworkProxy::UdpTunnelingCapability)
1587 scaps << QStringLiteral(
"UDP");
1588 if (caps & QNetworkProxy::CachingCapability)
1589 scaps << QStringLiteral(
"Caching");
1590 if (caps & QNetworkProxy::HostNameLookupCapability)
1591 scaps << QStringLiteral(
"NameLookup");
1592 if (caps & QNetworkProxy::SctpTunnelingCapability)
1593 scaps << QStringLiteral(
"SctpTunnel");
1594 if (caps & QNetworkProxy::SctpListeningCapability)
1595 scaps << QStringLiteral(
"SctpListen");
1596 debug <<
'[' << scaps.join(u' ') <<
']';
1602 QDebugStateSaver saver(debug);
1603 debug.resetFormat().nospace()
1605 <<
"type: " << proxyQuery.queryType()
1606 <<
", protocol: " << proxyQuery.protocolTag()
1607 <<
", peerPort: " << proxyQuery.peerPort()
1608 <<
", peerHostName: " << proxyQuery.peerHostName()
1609 <<
", localPort: " << proxyQuery.localPort()
1610 <<
", url: " << proxyQuery.url()