summaryrefslogtreecommitdiffstats
path: root/src/network/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* Add QHttpHeaders to QNetworkRequestLena Biliaieva8 days1-0/+1
| | | | | | | | | | | | Added headers() and setHeaders() methods to QNetworkRequest. [ChangeLog][QtNetwork][QNetworkRequest] Added headers() and setHeaders() methods to QNetworkRequest, which provide an interface to work with QHttpHeaders. Task-number: QTBUG-107751 Change-Id: I2e1dc7cb2efab5903eb7ff23b75d01aefe13273d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QNAM: Add Q*Socket abstractions in new namespaceMårten Nordheim2024-04-231-0/+1
| | | | | | | | | Functions to unify certain aspects of QAbstractSocket and QLocalSocket. To be used in follow-up commits. Task-number: QTBUG-102855 Change-Id: I4fb39e626c8a4054196f5985a9ccc2532117e4a7 Reviewed-by: Mate Barany <mate.barany@qt.io>
* Add preliminary support for Qt for visionOSTor Arne Vestbø2024-04-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | Qt already runs on Vision Pro as "Designed for iPad", using Qt for iOS. This change enables building Qt for visionOS directly, which opens the door to visionOS specific APIs and use-cases such as volumes and immersive spaces. The platform removes some APIs we depend on, notably UIScreen, so some code paths have been disabled or mocked to get something up and running. As our current window management approach on UIKit platforms depends on UIWindow and UIScreen there is currently no way to bring up QWindows. This will improve once we refactor our window management to use window scenes. To configure for visionOS, pass -platform macx-visionos-clang, and optionally add -sdk xrsimulator to build for the simulator. Change-Id: I4eda55fc3fd06e12d30a188928487cf68940ee07 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Long live [[nodiscard]] QFile::openGiuseppe D'Angelo2024-04-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Having already caught some bugs in real code because of unchecked calls to QFile::open, this commit marks QFile::open (and open() in other file-I/O classes) as [[nodiscard]]. Since it's going to raise warnings, the plan is to keep the existing behavior up to and including the next LTS. Then the warnings will switch on by default. All of this is protected by system of macros to opt-in or opt-out the behavioral change at any time. A possible counter-argument for doing this is that QFile::open is also used for opening files in the the resource system, and that opening "cannot fail". It clearly can, if the resource is moved away or renamed; code should at a minimum use a Q_ASSERT in debug builds. Another counter-argument is the opening of file handles or descriptors; but again, that opening may fail in case the handle has been closed or if the flags are incompatible. --- Why not marking *every* open() override? Because some are not meant to be called directly -- for instance sockets are supposed to be open via calls to `connectToHost` or similar. One notable exception is QIODevice::open() itself. Although rarely called directly by user code (which just calls open() on a specific subclass, which likely has an override), it may be called: 1) By code that just takes a `QIODevice *` and does something with it. That code is arguably more rare than code using QFile directly. Still, being "generic" code, they have an extra responsibility when making sure to handle a possible opening failure. 2) By QIODevice subclasses, which are even more rare. However, they usually ignore the return from QIODevice::open() as it's unconditionally true. (QIODevice::open() doesn't use the protected virtual pattern.) I'll try and tackle QIODevice in a future commit. [ChangeLog][QtCore][QFileDevice] The open() functions of file-related I/O classes (such as QFile, QSaveFile, QTemporaryFile) can now be marked with the "nodiscard" attribute, in order to prevent a category of bugs where the return value of open() is not checked and the file is then used. In order to avoid warnings in existing code, the marking can be opted in or out, by defining QT_USE_NODISCARD_FILE_OPEN or the QT_NO_USE_NODISCARD_FILE_OPEN macros. By default, Qt will automatically enable nodiscard on these functions starting from Qt 6.10. Change-Id: Ied940e1c0a37344f5200b2c51b05cd1afcb2557d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Network: cleanlinessMårten Nordheim2024-04-051-0/+3
| | | | | | | | | QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_BYTEARRAY QT_NO_URL_CAST_FROM_STRING Change-Id: Ic77ed8ccbdb146b7e7b26123923795f9748d3a38 Reviewed-by: Mate Barany <mate.barany@qt.io>
* Network: Use QHttpHeaders in QHttpHeaderParserLena Biliaieva2024-01-251-1/+1
| | | | | | | | | | | | | QHttpHeaderParser::headers() method is changed to return QHttpHeaders. QAuthenticatorPrivate::parseHttpResponse() method is changed to work with QHttpHeaders. QHttpNetworkHeader::header() method is updated to return QHttpHeaders. Tests are updated. Task-number: QTBUG-120133 Change-Id: I20a18b509acd7a8b8d93884cff8349519d64293e Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io>
* Fix accidental implicit QBA->QString conversionMårten Nordheim2024-01-181-0/+1
| | | | | | | | | | And make sure it cannot happen again by adding the QT_NO_CAST_FROM_ASCII define to the Network module. Amends 5346404da64ac87d161f510d9fee71899d7c70ba Change-Id: Ib10d7822c514caaf40b6b36ee71947c034daf338 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Remove the use of GENERATE_PRIVATE_CPP_EXPORTS argumentAlexey Edelev2024-01-171-1/+0
| | | | | | Task-number: QTBUG-117983 Change-Id: Ic12e6c9daedd56f54cbde20e6bebd19f8420604c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Privately introduce QHttp2ConnectionMårten Nordheim2024-01-171-0/+1
| | | | | | | | | | | | | | | For use in QtGRPC. There is some duplication between this code and the code in QHttp2ProtocolHandler. But let's not change the implementation of the protocol handler after the 6.7 beta release. Nor do I think we should do it for 6.8 LTS. So let's just live with the duplication until that has branched. Pick-to: 6.7 Fixes: QTBUG-105491 Change-Id: I69aa38a3c341347e702f9c07c27287aee38a16f2 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Add REST client convenience wrappersJuha Vuolle2023-12-081-0/+2
| | | | | | | | | | | | | [ChangeLog][QtNetwork][QRestAccessManager] Added new convenience classes QRestAccessManager and QRestReply for typical RESTful client application usage Task-number: QTBUG-114637 Task-number: QTBUG-114701 Change-Id: I65057e56bf27f365b54bfd528565efd5f09386aa Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Mate Barany <mate.barany@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QNetworkRequestFactory convenience classJuha Vuolle2023-12-081-0/+2
| | | | | | | | | | | | | | | | | | | | | The class provides a way to represent server-side service endpoints. With RESTful applications these endpoints typically have a need for repeating requests fields such as headers, query parameters, bearer token, base URL, SSL configuration. This class allows setting of the repeating parts, while allowing the setting of changing parts on a per-request basis. [ChangeLog][QtNetwork][QNetworkRequestFactory] Added a new convenience class to help with the needs of repeating network request details imposed by the server-side service endpoints, which is common with RESTful applications. Task-number: QTBUG-113814 Change-Id: Iabcfaed786949ffbb0ad0c75297d0db6ecc1a3cc Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Mate Barany <mate.barany@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add QHttpHeaders classJuha Vuolle2023-12-081-0/+1
| | | | | | | | | | | | New QHttpHeaders class for use in place of std::pair<QBA,QBA>, QMap<QBA>, and QMultiMap/Hash<QBA,QBA> to represent HTTP headers. [ChangeLog][QtNetwork][QHttpHeaders] New QHttpHeaders class Task-number: QTBUG-107042 Change-Id: I54766886a491acfc9a813a3414322a75011acb9d Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Re-do the namespace fix for the linker scriptsThiago Macieira2023-12-071-6/+1
| | | | | | | | | | | | | | | | | | | This amends and corrects b63045477ea05c17f9abe9434e6d824453e3935a. The fix there was incorrect for two reasons: 1) it missed one symbol in QtCore (the QFutureInterfaceBase one added in 0f0371c8304bd7354a3c43f9fac6b85bd3e9a3f1. 2) it only worked for namespaces that were 15 characters long Instead, just use a wildcard where the namespace should be for Qt symbols (note: an extra wildcard appears for plain types because they go from <N><type> to N<N><namespace><N><type>E). Pick-to: 6.6 Change-Id: Iae41eb8991e349ceb836fffd179d6e709d6632f8 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix android buildMichal Klocek2023-11-141-2/+6
| | | | | | | | | | | | | | Fix qt namespace issues: * qjniarray.h:339:30: error: no template named 'Traits'; * ld.lld: error: version script assignment of 'Qt_6' to symbol '_ZNTestQTNamespace114QReadWriteLock16destroyRecursiveEP21QReadWriteLockPrivate' failed: symbol not defined * same for _ZN16QNetworkDatagram7destroyEP23QNetworkDatagramPrivate * qtimezoneprivate_android.cpp:14:21: error: unknown type name 'TimeZone' * qandroidplatformclipboard.h:13:1: error: no template named 'Object' Change-Id: Ia5fc3990af4a4d762e194c7951727f8d5b10670e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* qnetworkrequest, qnetworkreply: port some methods to QBAVAnton Kudryavtsev2023-10-301-0/+3
| | | | | | | | | [ChangeLog][QtNetwork] Ported hasRawHeader and rawHeader of QNetworkReply and QNetworkRequest to QByteArrayView. Change-Id: Ife71ba11b1ee8907c104dba3210d7a033568edf4 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Remove Qt_6_PRIVATE_API ELF from a symbol used by ~QNetworkDatagramMårten Nordheim2023-10-211-0/+8
| | | | | | | | | | As in 0f0371c8304bd7354a3c43f9fac6b85bd3e9a3f1. Pick-to: 6.6 Fixes: QTBUG-118229 Change-Id: Ie05c213ceb694413194826e4e119f3fb9ff1f1e8 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Enable QT_NO_CONTEXTLESS_CONNECT for most of QtBaseGiuseppe D'Angelo2023-07-111-0/+1
| | | | | | | | | It's clean now, keep it as such. Enabling it for QtCore is still OK, because it just hides a function template declared in a header. Change-Id: I8e7dfae179732ba04241a6a3258c2d722e8259df Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* CMake: remove "res_ninit" feature and collapse to just "libresolv"Thiago Macieira2023-05-271-2/+2
| | | | | | | | | | | | | Testing for "res_ninit" when WrapResolv.cmake has already checked for far more complex functions was pointless. Instead, just accept the library that was found by find_package() as good enough and rename the feature as "libresolv". Amends 4a46ba1209907796f4a14f6feb35ed4d70155d7d and 68b625901f9eb7c34e3d7aa302e1c0a454d3190b. Change-Id: Ib5ce7a497e034ebabb2cfffd1762c0afa2fac6e0 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Compile Network with NOMINMAXAmir Masoud Abdol2023-05-241-0/+2
| | | | | | | | | | | | | | | | On Windows, when building using Unity Build, min/max macro form `window.h` makes it to some files, and messes up evaluation of code like `std::numeric_limits<T>::max()` which leads to compilation error. We don't use min/max macros in Qt base, and it might be the time to pass NOMINMAX to our targets. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ia1ff5de36538075264c8556ef3b0416f3c15168c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove duplicate codeAmir Masoud Abdol2023-05-231-6/+0
| | | | | | | | There is an identical entry right above it. Pick-to: 6.5 Change-Id: Ia962b19c01be2fdd143eeb5932c6ba309c73be34 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Network: link directly to libresolv instead of dlopen()ing itAmir Masoud Abdol2023-05-111-23/+16
| | | | | | | | | | | | | | | | | | There's little need for us to dynamically load it. The reasons why that was necessary aren't in the public history (Qt 4.5 already had it[1]). I remember writing the code in 2007-2008, I just don't remember why. On modern Linux and FreeBSD, there's no libresolv.so any more and those symbols have been rolled up into libc.so. It's still necessary on Darwin systems, so this commit introduces WrapResolv. It also resolves the unity build issues relating to libresolv symbols. [1] https://code.qt.io/cgit/qt/qt.git/tree/src/network/kernel/qhostinfo_unix.cpp?h=v4.5.1 Task-number: QTBUG-109394 Change-Id: Ic5799e4d000b6c9395109e008780643bac52122b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Rid of 'special case' markersAlexey Edelev2023-04-131-2/+4
| | | | | | | | | | | It's unlikely we will ever use pro2cmake at this project stage, so it doesn't make any sense to keep the 'special case' markers in the CMake scripts. Remove them and replace with TODO where needed. Change-Id: I84290c20679dabbfdec3c5937ce0428fecb3e5a7 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Exclude sources from the Unity BuildAmir Masoud Abdol2023-04-111-0/+4
| | | | | | | | | | | There are patches for addressing the issues raised by these two source files; however, it would be beneficial to exclude them temporary while we are testing, and debugging the unity build on CI. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ie8631cf1df086b22967a8cc41874a3ef856c3ef8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Use Qt CMake APIs to exclude files from Unity BuildAmir Masoud Abdol2023-04-031-18/+17
| | | | | | | | | | | | | | | | | | | | This is a bit of a cleanup, mainly around unity build, and a few other minor things: - I replaced the direct inclusion of sources files using `set_source_files_properties`, and instead used `NO_UNITY_BUILD_SOURCES` when possible. In most cases, they are being excluded in their respective `qt_internal_extend_target` but sometimes I had to make a new extension. - In few cases, we had to manually exclude the NO_PCH files, so, I instead passed them directly to the NO_PCH_SOURCES which also exclude them from the unity build as well. - Removed a few unnecessary "" Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: I466576592c1d115a2da4d88672c1e4b9f995f2ed Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* src: Remove remains of qmake conversion from CMakeLists.txt filesFriedemann Kleint2023-02-101-9/+4
| | | | | | Pick-to: 6.5 Change-Id: Id644d322a602038403bb7f46c532744575fbf6d3 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* QPasswordDigestor: add OpenSSL 3.0 support to deriveKeyPbkdf2Jan Grulich2023-02-091-0/+5
| | | | | | | | | | | Use OpenSSL 3.0 in deriveKeyPbkdf2() if it's available. This currently produces same results, but in the future we will have possibilities to force some additional compliancy, for example we can enable SP800-132 compliance checks, which are not enabled currently because it would differ from the original implementation. Change-Id: Ia7a7cc91ea3f20c9d76e39309daa7c97cd7ad5c6 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QtNetwork: Split out QNativeSocketEnginePrivateFriedemann Kleint2023-02-021-1/+1
| | | | | | | | | | | The aim is to have fewer files including <windows.h>. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Id9cc08f54b5daf6d7e317fad27036dc2efaacbb8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Don't include qnetworkproxy_generic.cpp for iOSTor Arne Vestbø2023-02-011-1/+1
| | | | | | | | We already have the necessary machinery in qnetworkproxy_darwin.cpp Pick-to: 6.5 Change-Id: I01d99c825ed794f1ff5ba229e64f9963b819228c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QtNetwork/Windows: Add exclusions for CMake Unity (Jumbo) buildsFriedemann Kleint2023-01-311-0/+19
| | | | | | | | | | | | The "interface" define in windows.h causes clashes with variables named "interface". It cannot be undef'ed since the winsock headers also uses it. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Id2daedfd6c57aae39a1fdfe92482f17884b68ef5 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* qnetworkproxy_mac: use API available both on iOS and macOSTimur Pocheptsov2023-01-301-2/+14
| | | | | | | | | | | | | | | To extract system proxies, the one we used previously, was not available on iOS and thus we could not obtain system proxies there. Support is limited - no such things, as SOCKS/FTP/etc. proxies, only PAC (auto configuration), and HTTP/HTTPS. There are no keys to extract info about HTTPS, so instead we'll use CFNetworkCopyProxiesForURL ( looks like this enables exclusion lists (which are hidden) functionality and apparently from the system point of view HTTP/HTTPS are the same. Fixes: QTBUG-39869 Change-Id: I73af719a2e2b5cded706e6b3faa4b8eaa879352b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QNetworkAccessManager: Configurable number of HTTP1 TCP connectionsMarkus Goetz2022-12-091-0/+1
| | | | | | | | | | | Introduces new class QHttp1Configuration. [ChangeLog][QtNetwork][QHttp1Configuration] New class. Fixes: QTBUG-25280 Fixes: QTBUG-108215 Change-Id: Ide6cee23946e5001befb8fab34edf10b8a66e02b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Move qurltlds_p.h out of src/network, and make it a .cpp fileKai Köhne2022-10-011-1/+2
| | | | | | | | | | | | | | The file was originally introduced as a header because the data was also used by Qt WebKit. This is not needed anymore. Moving it into src/3rdparty is also more in line with QUIP 4. [ChangeLog][Third-Party Code] The Public Suffix List (PSL) data file got moved from src/network/kernel/qurltlds_p.h to src/3rdparty/libpsl/psl_data.cpp. Change-Id: I3283cbbd72575032d8c7ebd333e81048d948c052 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Change the license of all CMakeLists.txt and *.cmake files to BSDLucie Gérard2022-08-231-1/+1
| | | | | | | Task-number: QTBUG-105718 Change-Id: I5d3ef70a31235868b9be6cb479b7621bf2a8ba39 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Add license headers to cmake filesLucie Gérard2022-08-031-0/+3
| | | | | | | | | | | | CMakeLists.txt and .cmake files of significant size (more than 2 lines according to our check in tst_license.pl) now have the copyright and license header. Existing copyright statements remain intact Task-number: QTBUG-88621 Change-Id: I3b98cdc55ead806ec81ce09af9271f9b95af97fa Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Move ssl header files to the general QtNetwork sourcesAlexey Edelev2022-06-221-5/+10
| | | | | | | | | | | Move public ssl headers to the general QtNetwork sources since they supposed to be used across the project without corresponding checks for the FEATURE_ssl presence. The content in these header files has a conditional implementation guarded by corresponding macros. Change-Id: I43168469da27321c2d8064ec2e5d7fe31126ebec Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Unify QSslServer from QtWebSockets and QtHttpServer into QtNetworkØystein Heskestad2022-06-041-0/+1
| | | | | | | | | | | | | Both QtWeSockets and QtHttpServer has a QSslServer class that is useful elsewhere. They are different though, so the new class has features from both versions. [ChangeLog][QtNetwork] Unify QSslServer from QtWebSockets and QtHttpServer into QtNetwork Task-number: QTBUG-100823 Change-Id: I523f04db39297ceb9b258f673eb12deecfc6886c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Rename FindZSTD to FindWrapZSTDAlexandru Croitor2022-02-281-1/+1
| | | | | | | | | | | | And the target ZSTD::ZSTD to WrapZSTD::WrapZSTD. This should allow building Qt with the -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON set. Pick-to: 6.2 6.3 Fixes: QTBUG-100537 Change-Id: I748601e4ad6f518323bf1034d6fc1de582c815e1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Network: Use public suffix database in DAFSA formatIevgenii Meshcheriakov2022-02-241-0/+1
| | | | | | | | | | | | | | | | | This saves 91kiB of text size and makes it easier to use a locally installed database when available. [ChangeLog][Third-Party Code] Moved attribution of The Public Suffix List from Qt Core to Qt Network. [ChangeLog][Third-Party Code] Added attribution of new libpsl library to Qt Network. libpsl is available under the BSD 3-Clause "New" or "Revised" License. Task-number: QTBUG-95889 Change-Id: Ibd37c7a94fdf235e75d96fec20d427fb5c2bd2a4 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Compile QNetworkAccessDebugPipeBackend only in developer buildsJoerg Bornemann2022-02-151-1/+5
| | | | | | | This fixes a moc warning in non-developer builds. Change-Id: I879a17715fd682382ce47ce4cfd7e162f8ceb2de Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* CMake: link OpenSSL to openssl tls backend instead of QtNetworkFrank Su2022-01-061-14/+0
| | | | | | | | | | | | | TLS backend has become plugins since Qt 6.2. QtNetwork does not need these links anymore. Also removes unnecessary condition since openssl tls backend is enabled only if OpenSSL is enabled. Pick-to: 6.2 6.3 Change-Id: I4cc0422531d567ad015f9648fbb2bcd51f634cb9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove pre-Win10 code paths in QtBaseYuhang Zhao2021-11-021-0/+2
| | | | | | | | | | | | | | Mostly a removal of dynamically loaded API. They should all exist on Windows 10 1809 (Qt6's minimum supported version). accessibility parts left untouched to make sure MinGW still compiles. Task-number: QTBUG-84432 Pick-to: 6.2 Change-Id: I7a091fc967bd6b9d18ac2de39db16e3b4b9a76ea Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* Disable the dnslookup feature for INTEGRITYJoerg Bornemann2021-10-011-1/+1
| | | | | | | | | | | | | | | | | | The QtNetwork project file excludes the dnslookup source files for Unix, despite the dnslookup feature is always on. This inconsistency leads to linker errors when building applications against QtNetwork: (error #412) unresolved symbols: 1 QDnsLookupRunnable::query(int, const QByteArray &, const QHostAddress &, QDnsLookupReply *) from libQt6Network.a(qdnslookup.cpp.o) Turn the feature off for INTEGRITY and remove the condition from the project file. Pick-to: 6.2 Change-Id: If086da51ca343f598eb273236e7b6338f5da1e97 Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Move QNAM's http header parsing into separate classØystein Heskestad2021-09-091-0/+1
| | | | | | Fixes: QTBUG-80701 Change-Id: I43f5e102c15d121dba74e07e3cd4bb8aded1c763 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Implement generating of private cpp exportsAlexey Edelev2021-08-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Add the generating of private cpp exports for Qt modules. Add the GENERATE_PRIVATE_CPP_EXPORTS option to qt_internal_add_module that is the manual switch for private exports generator. Existing modules in qtbase doesn't follow any strict convention of using private cpp export. So there is no clue how to detect if generating of the private exports is required or not for the module. Use autogenerated private cpp exports in QtNetwork module. CPP_EXPORT_HEADER_NAME argument of the qt_internal_add_module function is replaced by the CPP_EXPORT_HEADER_BASE_NAME and has a different meaning. The provided name is used as a base name for the private and non-private headers that contains cpp exports. Header files suffixes are constant: .h and _p.h for the non-private and private header files accordingly. Pick-to: 6.2 Task-number: QTBUG-90492 Change-Id: Icf11304e00379fb8521a865965c19b974e01e62f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* NetworkAccessBackend: Remove the backend part of the nameMårten Nordheim2021-08-261-1/+1
| | | | | | | | | | | | | | For consistency with naming of other plugins. Slight compatibility break, but this is semi-private API. [ChangeLog][Network][QNetworkAccessBackend] The NetworkAccessBackend plugin-type is renamed to NetworkAccess, if you have a plugin marked NetworkAccessBackend you need to change it to NetworkAccess. Pick-to: 6.2 Change-Id: Ib5ea02f542254b0f5b8c425c89ee00075a58c956 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Migrate to autogenerated cpp exportsAlexey Edelev2021-06-251-0/+1
| | | | | | | | | Replace the hardcoded cpp exports with a generated one where it's applicable. Task-number: QTBUG-90492 Change-Id: Idc160b594987b2c765e75bd669aae851b4366282 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QNetworkInformation: Rename the plugins and typeMårten Nordheim2021-06-111-1/+1
| | | | | | | | | | To better match other plugins in Qt Pick-to: 6.2 Change-Id: I6ab19603f13c80a8afe4fe69f64669559a0eea15 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Yuhang Zhao <2546789017@qq.com>
* Move plugin code from QtNetwork to qtbase/pluginsTimur Pocheptsov2021-04-221-70/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All TLS (and non-TLS) backends that QSsl classes rely on are now in plugins/tls (as openssl, securetransport, schannel and certonly plugins). For now, I have to disable some tests that were using OpenSSL calls - this to be refactored/re-thought. These include: qsslsocket auto-test (test-case where we work with private keys), qsslkey auto-test (similar to qsslsocket - test-case working with keys using OpenSSL calls). qasn1element moved to plugins too, so its auto-test have to be re-thought. Since now we can have more than one working TLS-backend on a given platform, the presence of OpenSSL also means I force this backend as active before running tests, to make sure features implemented only in OpenSSL-backend are tested. OCSP auto test is disabled for now, since it heavily relies on OpenSSL symbols (to be refactored). [ChangeLog][QtNetwork][QSslSocket] QSslSocket by default prefers 'openssl' backend if it is available. [ChangeLog][QtNetwork][QSslSocket] TLS-backends are not mutually exclusive anymore, depending on a platform, more than one TLS backend can be built. E.g., configuring Qt with -openssl does not prevent SecureTransport or Schannel plugin from being built. Fixes: QTBUG-91928 Change-Id: I4c05e32f10179066bee3a518bdfdd6c4b15320c3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add Solaris support in cmake buildNiclas Rosenvik2021-04-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add SOLARIS cmake platform definition. Add settings for QT_DEFAULT_MKSPEC so that qplatformdefs.h can be found. Solaris has its gssapi symbols in libgss. Solaris supports @ORIGIN. Solaris ld does not support --dynamic-list needed for reduce relocations. Make solaris fail the reduce relocation test. getauxval is specific to GNU libc and some other libc implementations on Linux but sys/auxv.h is not. The bootstrap uses sys/aux.h as the only indication for getauxval. This breaks builds on Solaris, so only make sys/auxv.h an indicator for getauxval on linux or glibc based systems. Solaris uses X11 so add it to the X11_SUPPORTED list. Solaris network libraries for sockets etc are in socket and nsl. ifreq does not have a member ifr_ifindex on Solaris, it uses ifr_index. Add test to check if ifr_index is a member of ifreq. The first struct in the in_addr union on solaris is defined as four uint8_t, therefore four arguments are needed for its initializer list. Change-Id: Ieed4c1bbac8559a7ae1db9c4e1e91f609f150270 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Introduce zlib find script to work around hardcoded iOS SDKAlexandru Croitor2021-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Xcode allows building a project targeting either the device or simulator sysroot in one single build dir, but for the sysroot switching to work there should be no linker or compiler flags referencing absolute paths of a specific sysroot. During CMake configuration of a project targeting iOS, all found system libraries will be within one single sysroot, either the device one or the simulator one, whichever one was passed to CMAKE_OSX_SYSROOT. CMake will then generate the Xcode project and pass those absolute paths, which makes sysroot switching within Xcode not work. To avoid that, the CMake documentation recommends passing linker and framework flags of the form '-lfoo' and '-framework bar' instead of absolute paths. Xcode then takes care of setting the correct framework search path. Zlib is one of the libraries found in the iOS sysroot and thus passed as absolute path. To avoid that, create a new FindWrapZLIB find script. The target it creates will pass the absolute path to the library on non Apple platforms and an -lz linker flag on Apple platforms (macOS and iOS). To avoid issues with target global promotion when system PNG package is found, ensure that a found ZLIB::ZLIB target is promoted to global manually in src/gui/configure.cmake. Pick-to: 6.1 Change-Id: I8bd8649be4f680a331ad51925f27cb9d13ac5e5f Reviewed-by: Cristian Adam <cristian.adam@qt.io>