qnetworkproxy.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/kernel/qnetworkproxy.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10class QSocks5SocketEngineHandler;-
11class QHttpSocketEngineHandler;-
12-
13class QGlobalNetworkProxy-
14{-
15public:-
16 QGlobalNetworkProxy()-
17 : mutex(QMutex::Recursive)-
18 , applicationLevelProxy(0)-
19 , applicationLevelProxyFactory(0)-
20-
21 , socks5SocketEngineHandler(0)-
22-
23-
24 , httpSocketEngineHandler(0)-
25-
26 {-
27-
28-
29-
30-
31 socks5SocketEngineHandler = new QSocks5SocketEngineHandler();-
32-
33-
34 httpSocketEngineHandler = new QHttpSocketEngineHandler();-
35-
36 }-
37-
38 ~QGlobalNetworkProxy()-
39 {-
40 delete applicationLevelProxy;-
41 delete applicationLevelProxyFactory;-
42-
43 delete socks5SocketEngineHandler;-
44-
45-
46 delete httpSocketEngineHandler;-
47-
48 }-
49-
50 void setApplicationProxy(const QNetworkProxy &proxy)-
51 {-
52 QMutexLocker lock(&mutex);-
53 if (!applicationLevelProxy)-
54 applicationLevelProxy = new QNetworkProxy;-
55 *applicationLevelProxy = proxy;-
56 delete applicationLevelProxyFactory;-
57 applicationLevelProxyFactory = 0;-
58 }-
59-
60 void setApplicationProxyFactory(QNetworkProxyFactory *factory)-
61 {-
62 QMutexLocker lock(&mutex);-
63 if (factory == applicationLevelProxyFactory)-
64 return;-
65 if (applicationLevelProxy)-
66 *applicationLevelProxy = QNetworkProxy();-
67 delete applicationLevelProxyFactory;-
68 applicationLevelProxyFactory = factory;-
69 }-
70-
71 QNetworkProxy applicationProxy()-
72 {-
73 return
executed 2577 times by 19 tests: return proxyForQuery(QNetworkProxyQuery()).constFirst();
Executed by:
  • tst_NetworkSelfTest
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • tst_qtcpsocket - unknown status
  • tst_qtextstream - unknown status
  • tst_qxmlsimplereader - unknown status
proxyForQuery(QNetworkProxyQuery()).firstconstFirst();
executed 2577 times by 19 tests: return proxyForQuery(QNetworkProxyQuery()).constFirst();
Executed by:
  • tst_NetworkSelfTest
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • tst_qtcpsocket - unknown status
  • tst_qtextstream - unknown status
  • tst_qxmlsimplereader - unknown status
2577
74 }-
75-
76 QList<QNetworkProxy> proxyForQuery(const QNetworkProxyQuery &query);-
77-
78private:-
79 QMutex mutex;-
80 QNetworkProxy *applicationLevelProxy;-
81 QNetworkProxyFactory *applicationLevelProxyFactory;-
82-
83 QSocks5SocketEngineHandler *socks5SocketEngineHandler;-
84-
85-
86 QHttpSocketEngineHandler *httpSocketEngineHandler;-
87-
88};-
89-
90QList<QNetworkProxy> QGlobalNetworkProxy::proxyForQuery(const QNetworkProxyQuery &query)-
91{-
92 QMutexLocker locker(&mutex);-
93-
94 QList<QNetworkProxy> result;-
95-
96-
97 QHostAddress parsed;-
98 QString hostname = query.url().host();-
99 if (hostname == QLatin1String("localhost")-
100 || hostname.startsWith(QLatin1String("localhost."))-
101 || (parsed.setAddress(hostname)-
102 && (parsed.isLoopback()))) {-
103 result << QNetworkProxy(QNetworkProxy::NoProxy);-
104 return result;-
105 }-
106-
107 if (!applicationLevelProxyFactory) {-
108 if (applicationLevelProxy-
109 && applicationLevelProxy->type() != QNetworkProxy::DefaultProxy)-
110 result << *applicationLevelProxy;-
111 else-
112 result << QNetworkProxy(QNetworkProxy::NoProxy);-
113 return result;-
114 }-
115-
116-
117 result = applicationLevelProxyFactory->queryProxy(query);-
118 if (result.isEmpty()) {-
119 QMessageLogger(__FILE__, 340346, __PRETTY_FUNCTION__).warning("QNetworkProxyFactory: factory %p has returned an empty result set",-
120 applicationLevelProxyFactory);-
121 result << QNetworkProxy(QNetworkProxy::NoProxy);-
122 }-
123 return result;-
124}-
125-
126namespace { namespace Q_QGS_globalNetworkProxy { typedef QGlobalNetworkProxy Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized) guard.store(QtGlobalStatic::Destroyed); } }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return &holder.value; } } } static QGlobalStatic<QGlobalNetworkProxy, Q_QGS_globalNetworkProxy::innerFunction, Q_QGS_globalNetworkProxy::guard> globalNetworkProxy;-
127-
128namespace {-
129 template<bool> struct StaticAssertTest;-
130 template<> struct StaticAssertTest<true> { enum { Value = 1 }; };-
131}-
132-
133static inline void qt_noop_with_arg(int) {}-
134-
135-
136static QNetworkProxy::Capabilities defaultCapabilitiesForType(QNetworkProxy::ProxyType type)-
137{-
138 qt_noop_with_arg(sizeof(StaticAssertTest< int(QNetworkProxy::DefaultProxy) == 0 >::Value));-
139 qt_noop_with_arg(sizeof(StaticAssertTest< int(QNetworkProxy::FtpCachingProxy) == 5 >::Value));-
140 static const int defaults[] =-
141 {-
142-
143 (int(QNetworkProxy::ListeningCapability) |-
144 int(QNetworkProxy::TunnelingCapability) |-
145 int(QNetworkProxy::UdpTunnelingCapability)),-
146-
147 (int(QNetworkProxy::TunnelingCapability) |-
148 int(QNetworkProxy::ListeningCapability) |-
149 int(QNetworkProxy::UdpTunnelingCapability) |-
150 int(QNetworkProxy::HostNameLookupCapability)),-
151-
152-
153 (int(QNetworkProxy::ListeningCapability) |-
154 int(QNetworkProxy::TunnelingCapability) |-
155 int(QNetworkProxy::UdpTunnelingCapability)),-
156-
157 (int(QNetworkProxy::TunnelingCapability) |-
158 int(QNetworkProxy::CachingCapability) |-
159 int(QNetworkProxy::HostNameLookupCapability)),-
160-
161 (int(QNetworkProxy::CachingCapability) |-
162 int(QNetworkProxy::HostNameLookupCapability)),-
163-
164 (int(QNetworkProxy::CachingCapability) |-
165 int(QNetworkProxy::HostNameLookupCapability)),-
166 };-
167-
168 if (int(type) < 0 || int(type) > int(QNetworkProxy::FtpCachingProxy))-
169 type = QNetworkProxy::DefaultProxy;-
170 return QNetworkProxy::Capabilities(defaults[int(type)]);-
171}-
172-
173class QNetworkProxyPrivate: public QSharedData-
174{-
175public:-
176 QString hostName;-
177 QString user;-
178 QString password;-
179 QNetworkProxy::Capabilities capabilities;-
180 quint16 port;-
181 QNetworkProxy::ProxyType type;-
182 bool capabilitiesSet;-
183 QNetworkHeadersPrivate headers;-
184-
185 inline QNetworkProxyPrivate(QNetworkProxy::ProxyType t = QNetworkProxy::DefaultProxy,-
186 const QString &h = QString(), quint16 p = 0,-
187 const QString &u = QString(), const QString &pw = QString())-
188 : hostName(h),-
189 user(u),-
190 password(pw),-
191 capabilities(defaultCapabilitiesForType(t)),-
192 port(p),-
193 type(t),-
194 capabilitiesSet(false)-
195 { }-
196-
197 inline bool operator==(const QNetworkProxyPrivate &other) const-
198 {-
199 return type == other.type &&-
200 port == other.port &&-
201 hostName == other.hostName &&-
202 user == other.user &&-
203 password == other.password &&-
204 capabilities == other.capabilities;-
205 }-
206};-
207-
208template<> void QSharedDataPointer<QNetworkProxyPrivate>::detach()-
209{-
210 if (d && d->ref.load() == 1)-
211 return;-
212 QNetworkProxyPrivate *x = (d ? new QNetworkProxyPrivate(*d)-
213 : new QNetworkProxyPrivate);-
214 x->ref.ref();-
215 if (d && !d->ref.deref())-
216 delete d;-
217 d = x;-
218}-
219-
220-
221-
222-
223-
224-
225-
226QNetworkProxy::QNetworkProxy()-
227 : d(0)-
228{-
229-
230-
231-
232 globalNetworkProxy();-
233}-
234QNetworkProxy::QNetworkProxy(ProxyType type, const QString &hostName, quint16 port,-
235 const QString &user, const QString &password)-
236 : d(new QNetworkProxyPrivate(type, hostName, port, user, password))-
237{-
238-
239-
240-
241 globalNetworkProxy();-
242}-
243-
244-
245-
246-
247QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)-
248 : d(other.d)-
249{-
250}-
251-
252-
253-
254-
255QNetworkProxy::~QNetworkProxy()-
256{-
257-
258}-
259-
260-
261-
262-
263-
264-
265-
266bool QNetworkProxy::operator==(const QNetworkProxy &other) const-
267{-
268 return d == other.d || (d && other.d && *d == *other.d);-
269}-
270QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)-
271{-
272 d = other.d;-
273 return *this;-
274}-
275void QNetworkProxy::setType(QNetworkProxy::ProxyType type)-
276{-
277 d->type = type;-
278 if (!d->capabilitiesSet)-
279 d->capabilities = defaultCapabilitiesForType(type);-
280}-
281-
282-
283-
284-
285-
286-
287QNetworkProxy::ProxyType QNetworkProxy::type() const-
288{-
289 return d ? d->type : DefaultProxy;-
290}-
291void QNetworkProxy::setCapabilities(Capabilities capabilities)-
292{-
293 d->capabilities = capabilities;-
294 d->capabilitiesSet = true;-
295}-
296QNetworkProxy::Capabilities QNetworkProxy::capabilities() const-
297{-
298 return d ? d->capabilities : defaultCapabilitiesForType(DefaultProxy);-
299}-
300bool QNetworkProxy::isCachingProxy() const-
301{-
302 return capabilities() & CachingCapability;-
303}-
304bool QNetworkProxy::isTransparentProxy() const-
305{-
306 return capabilities() & TunnelingCapability;-
307}-
308-
309-
310-
311-
312-
313-
314void QNetworkProxy::setUser(const QString &user)-
315{-
316 d->user = user;-
317}-
318-
319-
320-
321-
322-
323-
324QString QNetworkProxy::user() const-
325{-
326 return d ? d->user : QString();-
327}-
328-
329-
330-
331-
332-
333-
334void QNetworkProxy::setPassword(const QString &password)-
335{-
336 d->password = password;-
337}-
338-
339-
340-
341-
342-
343-
344QString QNetworkProxy::password() const-
345{-
346 return d ? d->password : QString();-
347}-
348-
349-
350-
351-
352-
353-
354void QNetworkProxy::setHostName(const QString &hostName)-
355{-
356 d->hostName = hostName;-
357}-
358-
359-
360-
361-
362-
363-
364QString QNetworkProxy::hostName() const-
365{-
366 return d ? d->hostName : QString();-
367}-
368-
369-
370-
371-
372-
373-
374void QNetworkProxy::setPort(quint16 port)-
375{-
376 d->port = port;-
377}-
378-
379-
380-
381-
382-
383-
384quint16 QNetworkProxy::port() const-
385{-
386 return d ? d->port : 0;-
387}-
388void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)-
389{-
390 if (globalNetworkProxy()) {-
391-
392 if (networkProxy.type() == DefaultProxy)-
393 globalNetworkProxy()->setApplicationProxy(QNetworkProxy::NoProxy);-
394 else-
395 globalNetworkProxy()->setApplicationProxy(networkProxy);-
396 }-
397}-
398QNetworkProxy QNetworkProxy::applicationProxy()-
399{-
400 if (globalNetworkProxy())-
401 return globalNetworkProxy()->applicationProxy();-
402 return QNetworkProxy();-
403}-
404QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const-
405{-
406 if (d->type != HttpProxy && d->type != HttpCachingProxy)-
407 return QVariant();-
408 return d->headers.cookedHeaders.value(header);-
409}-
410void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)-
411{-
412 if (d->type == HttpProxy || d->type == HttpCachingProxy)-
413 d->headers.setCookedHeader(header, value);-
414}-
415bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const-
416{-
417 if (d->type != HttpProxy && d->type != HttpCachingProxy)-
418 return false;-
419 return d->headers.findRawHeader(headerName) != d->headers.rawHeaders.constEnd();-
420}-
421QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const-
422{-
423 if (d->type != HttpProxy && d->type != HttpCachingProxy)-
424 return QByteArray();-
425 QNetworkHeadersPrivate::RawHeadersList::ConstIterator it =-
426 d->headers.findRawHeader(headerName);-
427 if (it != d->headers.rawHeaders.constEnd())-
428 return it->second;-
429 return QByteArray();-
430}-
431QList<QByteArray> QNetworkProxy::rawHeaderList() const-
432{-
433 if (d->type != HttpProxy && d->type != HttpCachingProxy)-
434 return QList<QByteArray>();-
435 return d->headers.rawHeadersKeys();-
436}-
437void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)-
438{-
439 if (d->type == HttpProxy || d->type == HttpCachingProxy)-
440 d->headers.setRawHeader(headerName, headerValue);-
441}-
442-
443class QNetworkProxyQueryPrivate: public QSharedData-
444{-
445public:-
446 inline QNetworkProxyQueryPrivate()-
447 : localPort(-1), type(QNetworkProxyQuery::TcpSocket)-
448 { }-
449-
450 bool operator==(const QNetworkProxyQueryPrivate &other) const-
451 {-
452 return type == other.type &&-
453 localPort == other.localPort &&-
454 remote == other.remote;-
455 }-
456-
457 QUrl remote;-
458 int localPort;-
459 QNetworkProxyQuery::QueryType type;-
460-
461 QNetworkConfiguration config;-
462-
463};-
464-
465template<> void QSharedDataPointer<QNetworkProxyQueryPrivate>::detach()-
466{-
467 if (d && d->ref.load() == 1)-
468 return;-
469 QNetworkProxyQueryPrivate *x = (d ? new QNetworkProxyQueryPrivate(*d)-
470 : new QNetworkProxyQueryPrivate);-
471 x->ref.ref();-
472 if (d && !d->ref.deref())-
473 delete d;-
474 d = x;-
475}-
476QNetworkProxyQuery::QNetworkProxyQuery()-
477{-
478}-
479-
480-
481-
482-
483-
484-
485-
486QNetworkProxyQuery::QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType)-
487{-
488 d->remote = requestUrl;-
489 d->type = queryType;-
490}-
491QNetworkProxyQuery::QNetworkProxyQuery(const QString &hostname, int port,-
492 const QString &protocolTag,-
493 QueryType queryType)-
494{-
495 d->remote.setScheme(protocolTag);-
496 d->remote.setHost(hostname);-
497 d->remote.setPort(port);-
498 d->type = queryType;-
499}-
500QNetworkProxyQuery::QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag,-
501 QueryType queryType)-
502{-
503 d->remote.setScheme(protocolTag);-
504 d->localPort = bindPort;-
505 d->type = queryType;-
506}-
507QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration,-
508 const QUrl &requestUrl, QueryType queryType)-
509{-
510 d->config = networkConfiguration;-
511 d->remote = requestUrl;-
512 d->type = queryType;-
513}-
514QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration,-
515 const QString &hostname, int port,-
516 const QString &protocolTag,-
517 QueryType queryType)-
518{-
519 d->config = networkConfiguration;-
520 d->remote.setScheme(protocolTag);-
521 d->remote.setHost(hostname);-
522 d->remote.setPort(port);-
523 d->type = queryType;-
524}-
525QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration,-
526 quint16 bindPort, const QString &protocolTag,-
527 QueryType queryType)-
528{-
529 d->config = networkConfiguration;-
530 d->remote.setScheme(protocolTag);-
531 d->localPort = bindPort;-
532 d->type = queryType;-
533}-
534-
535-
536-
537-
538-
539QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)-
540 : d(other.d)-
541{-
542}-
543-
544-
545-
546-
547QNetworkProxyQuery::~QNetworkProxyQuery()-
548{-
549-
550}-
551-
552-
553-
554-
555QNetworkProxyQuery &QNetworkProxyQuery::operator=(const QNetworkProxyQuery &other)-
556{-
557 d = other.d;-
558 return *this;-
559}-
560bool QNetworkProxyQuery::operator==(const QNetworkProxyQuery &other) const-
561{-
562 return d == other.d || (d && other.d && *d == *other.d);-
563}-
564QNetworkProxyQuery::QueryType QNetworkProxyQuery::queryType() const-
565{-
566 return d ? d->type : TcpSocket;-
567}-
568-
569-
570-
571-
572void QNetworkProxyQuery::setQueryType(QueryType type)-
573{-
574 d->type = type;-
575}-
576int QNetworkProxyQuery::peerPort() const-
577{-
578 return d ? d->remote.port() : -1;-
579}-
580void QNetworkProxyQuery::setPeerPort(int port)-
581{-
582 d->remote.setPort(port);-
583}-
584QString QNetworkProxyQuery::peerHostName() const-
585{-
586 return d ? d->remote.host() : QString();-
587}-
588void QNetworkProxyQuery::setPeerHostName(const QString &hostname)-
589{-
590 d->remote.setHost(hostname);-
591}-
592-
593-
594-
595-
596-
597-
598-
599int QNetworkProxyQuery::localPort() const-
600{-
601 return d ? d->localPort : -1;-
602}-
603void QNetworkProxyQuery::setLocalPort(int port)-
604{-
605 d->localPort = port;-
606}-
607QString QNetworkProxyQuery::protocolTag() const-
608{-
609 return d ? d->remote.scheme() : QString();-
610}-
611void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)-
612{-
613 d->remote.setScheme(protocolTag);-
614}-
615-
616-
617-
618-
619-
620-
621-
622QUrl QNetworkProxyQuery::url() const-
623{-
624 return d ? d->remote : QUrl();-
625}-
626void QNetworkProxyQuery::setUrl(const QUrl &url)-
627{-
628 d->remote = url;-
629}-
630-
631-
632-
633-
634-
635-
636-
637QNetworkConfiguration QNetworkProxyQuery::networkConfiguration() const-
638{-
639 return d ? d->config : QNetworkConfiguration();-
640}-
641void QNetworkProxyQuery::setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration)-
642{-
643 d->config = networkConfiguration;-
644}-
645QNetworkProxyFactory::QNetworkProxyFactory()-
646{-
647}-
648-
649-
650-
651-
652QNetworkProxyFactory::~QNetworkProxyFactory()-
653{-
654}-
655void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)-
656{-
657 if (enable) {-
658 setApplicationProxyFactory(new QSystemConfigurationProxyFactory);-
659 } else {-
660 setApplicationProxyFactory(0);-
661 }-
662}-
663void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)-
664{-
665 if (globalNetworkProxy())-
666 globalNetworkProxy()->setApplicationProxyFactory(factory);-
667}-
668QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuery &query)-
669{-
670 if (!globalNetworkProxy())-
671 return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);-
672 return globalNetworkProxy()->proxyForQuery(query);-
673}-
674-
675-
676-
677-
678-
679-
680QDebug operator<<(QDebug debug, const QNetworkProxy &proxy)-
681{-
682 QDebugStateSaver saver(debug);-
683 debug.resetFormat().nospace();-
684 QNetworkProxy::ProxyType type = proxy.type();-
685 switch (type) {-
686 case QNetworkProxy::NoProxy:-
687 debug << "NoProxy ";-
688 break;-
689 case QNetworkProxy::DefaultProxy:-
690 debug << "DefaultProxy ";-
691 break;-
692 case QNetworkProxy::Socks5Proxy:-
693 debug << "Socks5Proxy ";-
694 break;-
695 case QNetworkProxy::HttpProxy:-
696 debug << "HttpProxy ";-
697 break;-
698 case QNetworkProxy::HttpCachingProxy:-
699 debug << "HttpCachingProxy ";-
700 break;-
701 case QNetworkProxy::FtpCachingProxy:-
702 debug << "FtpCachingProxy ";-
703 break;-
704 default:-
705 debug << "Unknown proxy " << int(type);-
706 break;-
707 }-
708 debug << '"' << proxy.hostName() << ':' << proxy.port() << "\" ";-
709 QNetworkProxy::Capabilities caps = proxy.capabilities();-
710 QStringList scaps;-
711 if (caps & QNetworkProxy::TunnelingCapability)-
712 scaps << ([]() -> QString { enum { Size = sizeof(u"" "Tunnel")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Tunnel" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());-
713 if (caps & QNetworkProxy::ListeningCapability)-
714 scaps << ([]() -> QString { enum { Size = sizeof(u"" "Listen")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Listen" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());-
715 if (caps & QNetworkProxy::UdpTunnelingCapability)-
716 scaps << ([]() -> QString { enum { Size = sizeof(u"" "UDP")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "UDP" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());-
717 if (caps & QNetworkProxy::CachingCapability)-
718 scaps << ([]() -> QString { enum { Size = sizeof(u"" "Caching")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Caching" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());-
719 if (caps & QNetworkProxy::HostNameLookupCapability)-
720 scaps << ([]() -> QString { enum { Size = sizeof(u"" "NameLookup")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "NameLookup" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());-
721 debug << '[' << scaps.join(QLatin1Char(' ')) << ']';-
722 return debug;-
723}-
724-
725-
726-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9