Commit Graph

2629 Commits (75c0ffaf6d2b92cdf26092e01acdd5af4afeac97)

Author SHA1 Message Date
Marc Mutz cab920d52c QSharedNetworkSessionManager: prune expired QNetworkSessions
Equality for QNetworkConfiguration is defined by identity of the
Private object, so even if there are QNCs with the same properties,
they will not compare equal. This probably happens when a user roams
through different WLANs (e.g. from work via public transport to home
and then back), and each time the home WLAN pops up, it will beget a
new QNetworkConfiguration, not comparing equal to the previous one.

So, over time, we might collect a sizeable amount of
QNetworkConfiguration objects just sitting in the cache without ever
being able to actually use an associated network session, because they
all have long since expired.

To fix, prune expired network sessions, and thus their associated
QNetworkConfigurations, from the cache. To not run every time, prune
only when this size of the cache is larger than 16 (arbitrary number).

Change-Id: I11a636f45ccf67420f84b1c79a4453a144de7c5c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-19 16:36:26 +02:00
Qt Forward Merge Bot 8f0790dd90 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I999ba23a27cd897017d15c6ffe41ea8cd008ffb9
2019-07-19 01:00:41 +02:00
Marc Mutz eaceabe9ac QHostInfo: port from recursive to non-recursive mutex
It turns out that the only reason a recursive mutex is used was
because work() was locking it. But work() was only ever called from
functions that already had locked the mutex themselves, and kept it
locked across the call to work(). Clearly mark work() as expecting to
be called with the mutex held (by renaming the function to
rescheduleWithMutexHeld(), then drop the mutex locking from it.

After this change, a non-recursive mutex suffices, so save the memory
allocation and extra complexity involved with recursive mutexes.

Looking at the non-QT_CONFIG(thread) code in rescheduleWithMutexHeld(),
one might be tempted to expect a recursive mutex, since that code
calls QHostInfoRunnable::run() directly, which, in turn, recurses into
QHostInfoLookupManager whence control came, under mutex lock. But in
non-QT_CONFIG(thread) builds, QMutex is but an empty shell, all of its
operations are no-ops, so no possibility for deadlock, either.

Change-Id: Ic01d90c2ed3995b66ccf946d146fdaa6f9af3d8b
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-18 11:38:02 +00:00
Marc Mutz 8abef02777 QHostInfo: add nothrow move constructor
QHostInfo isn't implicitly shared. The more important to optimize away
copies by providing a move constructor.

Port from QScopedPointer to Q_DECLARE_PRIVATE, as otherwise the move
ctor can't be inline, and we don't implement move ctors out-of-line in
Qt.

[ChangeLog][QtNetwork][QHostInfo] Added move contructor.

Change-Id: I6b63a04e36f63e299205830fdc590ff7e2af338b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-18 12:05:28 +02:00
Marc Mutz c187d58244 QtNetwork: ssl: port from QMutex::Recursive to QRecursiveMutex
Change-Id: I78913fee6720f6ad9b196824b35de189567340be
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-18 12:00:58 +02:00
Qt Forward Merge Bot 7576250b1c Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I685000c4f33fb3707b2102fae0b58092107dc8f0
2019-07-18 01:00:08 +02:00
Qt Forward Merge Bot eb9c5fd4f9 Merge "Merge remote-tracking branch 'origin/5.13' into dev" 2019-07-17 11:47:20 +02:00
Mårten Nordheim 19e45ee4c1 Win: qnetconmon: Use CoInitialize instead of CoInitializeEx
Somehow I didn't test using QNetwork{Status,Connection}Monitor together
with Gui. In qwindowstheme.cpp we call CoInitialize and as such we
cannot use CoInitializeEx with a different thread mode.

Change-Id: If4a4441cc2616371d8b7cda72cfad11187d8f153
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-17 11:42:46 +02:00
Qt Forward Merge Bot 64df0eda36 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/global/qlogging.cpp
	src/gui/painting/qtextureglyphcache_p.h
	src/gui/text/qfontengine.cpp
	src/widgets/widgets/qlineedit.cpp

Change-Id: Ic8798538df466b7141caa8bbf1fb7605eb56be37
2019-07-17 10:44:21 +02:00
Mårten Nordheim 2a15ec72c0 QHttpSocketEngine: The 'Connection' options are case insensitive
As noted in RFC7230 Section 6.1 the 'Connection' options are case
insensitive.

https://tools.ietf.org/html/rfc7230#section-6.1

Change-Id: I80b98d82eaa5572d38a6c3f99383bc059ec91c54
Fixes: QTBUG-76990
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-15 13:31:12 +02:00
Marc Mutz a7383b4b6d QNetworkRequest: make the default ctor implicit
As in QVarLengthArray (c34242c679), this will
probably bite someone someday, so fix it before there's a bug report.

Use ctor delegation to keep code size increase small.

There's also the benefit that default-constructing a QNetworkRequest now
no longer creates an expensive QUrl object just to destroy it unused again.

Add an auto-test.

Change-Id: I5ceb5402ca3946048d695244d1b1c36564a1e80a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-15 13:07:10 +02:00
Marc Mutz 319e0f097d QNativeSocketEngine: disable sign-compare warning-turned-error on Clang
On the WASM platform, the macro CMDG_NEXTHDR, which is not under our
control, emits a warning about comparing ulong and long with each
other, which -Werror turns into an error:

  qnativesocketengine_unix.cpp:1004:24: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare]
    cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
  emsdk/emscripten/1.38.30/system/include/libc/sys/socket.h:286:44: note: expanded from macro 'CMSG_NXTHDR'
    __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fix by locally disabling the warning.

Change-Id: Ia2ed4318b2ef679b84ac8544835d1e383568ccac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-13 18:40:06 +02:00
Qt Forward Merge Bot 77d126ccb5 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	configure.pri

Also required s/solid\.color/solidColor/ in a couple of places in:
	src/gui/painting/qpaintengine_raster.cpp

Change-Id: I29937f63e9779deb6dac7ae77e2948d06ebc0319
2019-07-12 12:23:29 +02:00
Alexandru Croitor 4dac45c9ee Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
Change-Id: I715b1d743d5f11560e7b3fbeb8fd64a5e5ddb277
2019-07-11 17:17:51 +02:00
Volker Hilsheimer cc32226e64 Windows: handle errors correctly when connecting to unreachable host
The previous code handled only some error codes, in a very inefficient
way, for some code paths. This change standardizes error handling using
a helper function that maps winsock WSAE* codes to Qt error codes.

The test for connecting to unreachable hosts or ports is now more
generic, and enabled on Windows, where it passes in local tests,
but dependency on network configuration still makes it fragile,
so ignoring some failures without completely skipping the test.

[ChangeLog][Network][Windows] Correctly emit errors when trying to
reach unreachable hosts or services

Change-Id: Icaca3e6fef88621d683f6d6fa3016212847de4ea
Fixes: QTBUG-42567
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-11 10:46:23 +02:00
Marc Mutz eb48b3c0e1 qsslsocket_openssl_symbols.cpp: replace manual memory management with std::unique_ptr
Also fix the name mismatch between the Windows- and non-Windows
versions of loadOpenSsl(), which, presumably, were caused by having
two different return values, something easily fixed by defining a
small struct instead of using a QPair.

Some #ifdef'ery saved, and a lot of brittle deletes on early returns.

Change-Id: I77440de2f6fa51759510506ff4ef51917eb5b3ea
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-10 13:38:02 +02:00
Marc Mutz 0a3107dd30 QHostInfo: fix a race condition on QHostInfoCache::enabled
In auto-test-enabled builds, QHostInfoCache can be enabled and
disabled using qt_qhostinfo_enable_cache() at any time. We cannot rule
out that users use this function, or, indeed, that the auto-test never
gets a threading stress-test. Under the assumption, then, that
QHostInfoCache::enabled can be set by any thread at any time, and is
read by any thread using QHostInfo::lookupHost(), we're presented with
a data race, thus UB.

Fix by making the accesses to QHostInfoCache::enabed atomic. Relaxed
operations are suffcient, as the bool is the only data of interest in
these situations. In particular, access to the cache itself is
protected by the cache's mutex.

We use std::atomic<bool> because QAtomicInteger<bool> doesn't exist on
all implementations, but std::atomic<bool> must. Commit a0faf9e236 set
the precedent that it works.

Change-Id: Ia1766753bb54c5fe8d8447b51a49a96a7a853eef
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-09 13:09:24 +00:00
Marc Mutz e6c646a678 QHostInfoRunnable: make the lookupFinished() call more robust
Use a scope guard to reliably mark the runnable as finished with the
manager, lest a deleted runnable lingers in the manager's
currentLookups for too long/ever.

Change-Id: I89eff49931d0428f4e75789a0a1188edb1f66220
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-09 07:09:51 +02:00
Alexandru Croitor 3622ebaac5 Merge remote-tracking branch 'origin/dev' into wip/qt6
Change-Id: I02cbc4f77a82100b96cdb90c160ce0207f180d7f
2019-07-08 13:20:48 +02:00
Marc Mutz 888e498020 QHostInfo: perform deferred cleanup (std::any_of)
The code contained a copy of std::any_of from a time when we couldn't rely
it's availability in all compilers. We now can, so remove the copy.

Change-Id: I356077f58ae6a48b71f2dd98a2dab4e2acf985c7
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-08 10:25:25 +00:00
Mårten Nordheim 8436fa30af Add manual test for QNetwork{Connection|Status}Monitor
Simplistic console application with one test for each of the two
classes. Simply tests that we receive the signal when the connection
is disrupted in some way.

This patch also exports the classes for tests/developer builds
so that we can actually link with them.

Change-Id: I8066312274350984110c3f3ad3e94854adca7c2a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-07-08 12:12:57 +02:00
Mårten Nordheim 006baa1c60 qnetconmonitor: Fix misspelling of accessible
Change-Id: Ia898d305f64abb5d3d1de007c764c143b26c7654
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-08 12:12:51 +02:00
Mårten Nordheim dc431b7e85 Introduce QNetwork(Connection|Status)Monitor to Windows
Currently not available for mingw because it's missing all the
interfaces. But should start working once it has them.

Change-Id: I231e8b69e008c5300a83087fe9cd071acd0687cb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-08 12:12:45 +02:00
Mårten Nordheim 011c221165 QNAM: Don't condition connecting QNetworkReplyImpl signals on qnetconmon
QNetwork{Status,Connection}Monitor isn't used for QNetworkReplyImpl yet,
so we should connect the signal until it is.

Change-Id: I40f1483608195418d43c442f46184882f64596ff
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-08 10:12:33 +00:00
Marc Mutz b41c9a8996 Inline QMutexPool into its only remaining user
Also reduce the pool size from 131 to 17, and use QBasicMutex
instead of recursive ones.

Change-Id: I3bf0374cce5ff2c07427070aba6128a22c9b70e4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-08 08:13:58 +00:00
Marc Mutz f14db5dd3a qsslsocket_openssl_symbols.cpp: replace mutex pool use with QBasicMutex
The use of QMutexPool caused an #ifdef, because, lacking an object,
some OpenSSL function pointer was used as the address required as
input for the mutex pool. Sadly, the names of the functions differ
between OpenSSL versions, thus the need for an #ifdef.

By simply using a QBasicMutex (defined at namespace scope to evade
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79561), the #ifdef can go
away.

Another level of #ifdefs goes away because, even for
non-QT_CONFIG(thread) builds, Q*Mutex etc are defined, just as
no-ops. So we can freely use them without QT_CONFIG(thread) guard,
unlike QMutexPool.

Finally, optimize for the (common?) case of already-loaded libraries
by making symbolsResolved an atomic variable, and checking that before
taking the mutex (double-checked locking, done right).

For reasons of said GCC bug, again, the QBasicAtomic is defined at
namespace scope. And then move the other boolean there for symmetry.

Change-Id: Ic5f44871fb200e5368b9af327e4d1e852fbc586c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-08 10:13:47 +02:00
Marc Mutz 619b92385e QtNetwork: port remaining uses of QMutex::Recursive to QRecursiveMutex
In one case, added NSDMI to avoid churning the ctor-init-list.

Change-Id: I5587d5cb7e393f60ad29cb5186127304d27d1d46
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-06 17:14:35 +02:00
Marc Mutz 5de9dedbc7 QtNetwork: bearer: port from QMutex::Recursive to QRecursiveMutex
Change-Id: I691ecbaf9ea0796decbb48fd62b25d0a2941d979
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-06 17:14:28 +02:00
Marc Mutz 90a29a73f8 QHostInfo: fix a race condition on wasDeleted
The plain bool variable wasDeleted is set to true in the
QHostLookupManager dtor before the call to clear(), which calls
waitForDone() on the thread pool performing the lookups. All tasks on
the thread pool start by checking this variable so as to return early
when destruction is in progress. But the check was outside the
mutex-protected area, so as a non-atomic load, without a
happens-before relation to the write, this is a Data Race, thus UB.

Fix by moving the check past the mutex locking into the critical
section. This way, tasks that were waiting for the mutex after seeing
no wasDeleted before get the message reliably.

This does not introduce a dead-lock, since the call to waitForDone()
is outside any mutex protection leaving a window for the tasks to
obtain the mutex and react on wasDeleted.

Change-Id: Ied4b9daa7dc78295b0d36a536839845c4db2fb78
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2019-07-05 18:50:12 +00:00
Liang Qi 9bc92cdcfd Merge "Merge remote-tracking branch 'origin/5.13' into dev" 2019-07-05 19:36:41 +02:00
Tasuku Suzuki 5d79f38370 Fix build without features.library
Change-Id: I3ce4a8e4c6488737115f2f16bfd8f0e1fc5fc4fa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-06 02:33:41 +09:00
Liang Qi deee7b7ece Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	.qmake.conf
	qmake/generators/makefile.cpp

Change-Id: Ifb2633a69d0bf8cdf12d799c6259beefc279c49e
2019-07-05 15:37:50 +02:00
Sona Kurazyan b0cd007335 Remove usages of QSysInfo's deprecated APIs
- Replaced QOperatingSystemVersion::WindowsVersion,
  QSysInfo::windowsVersion(), QSysInfo::macVersion(),
  QSysInfo::MacintoshVersion with QOperatingSystemVersion::current().

- Added QOperatingSystemVersion::WindowsVista for convenience, as it
  is used in lots of places.

Change-Id: If9c4ac496005b2e70b5c70be160747afa74b98c1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-05 09:26:17 +00:00
Qt Forward Merge Bot e72e60b107 Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" 2019-07-03 15:19:38 +02:00
Qt Forward Merge Bot a2b221e595 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	.qmake.conf

Change-Id: I936be3c0df2b9845ff6a85eb3d4442cdabe63d37
2019-07-03 15:19:26 +02:00
Felix Barz 0f92f2f35d Add custom verb support for WASM HTTP requests
The QNetworkReply implementation for Qt for WebAssembly now supports
usage of the QNetworkAccessManager::sendCustomRequest, making it
possible to send requests with custom verbs.

[ChangeLog][QtNetwork][QNetworkAccessManager] Fixed
QNetworkAccessManager::sendCustomRequest for Qt For WebAssembly.

Fixes: QTBUG-76775
Change-Id: I9394ffef110fce4ed2c877893631bedc7631f71e
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-07-03 14:41:11 +02:00
Volker Hilsheimer 833519f2de Fix compiler warnings when building with DEBUG defines set
Change-Id: I51fc7aae246916e585b21b4e7da1fc5a4ac392fd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-02 23:30:42 +02:00
Mårten Nordheim 1eeab2d27f QSocks5SocketEngine: account for in-transit signal when waiting for read
When calling waitFor{ReadyRead,Disconnected} it will wait for data but
if the data is already received and the read notification has been
queued (and there's no more data coming in) it will return false.

By checking if a read notification has been queued and then handling
this we can easily take care of this scenario.

Fixes some flaky tests which missed the read data in waitForDisconnect
and similar.

Fixes: QTBUG-38385
Change-Id: Ic05d59883c1175783e56ff1822b6636c35aec874
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-02 16:05:15 +02:00
Mårten Nordheim 5e0a45e932 QSocks5SocketEngine: pass data to application when connected
If we end up in the connected state then we should pass on any
remaining data immediately instead of waiting until the next time we get
a read notification.

The other `case`s in the switch might be able to do something similar,
but I don't want to introduce that logic now in case it breaks something
else, the Connected branch is small and simple to deal with.

Should severely reduce flakiness with socks proxy in CI under pressure.

Task-number: QTBUG-76367
Change-Id: I0965d4c62a29a25ce6b8dd60862a464279aef0b4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
2019-07-02 16:05:07 +02:00
Liang Qi d25c322729 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/network/ssl/qsslsocket_openssl.cpp
	src/platformsupport/vkconvenience/qvkconvenience.cpp

Change-Id: I97ce6ed185f7fdad8102cc58d3cfec0119fd7bb4
2019-07-01 10:21:37 +02:00
Marc Mutz e7b1c500d4 Mark qHash(QOcspResponse) as noexcept
Because it is.

Change-Id: I8d5204c30884b2c8656615a7d82428c539672d28
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2019-06-29 16:11:52 +02:00
Marc Mutz 840f55f0ae Remove unused qmutexpool_p.h includes
Change-Id: Ic5f56b12953f2e42d94f6e6c14fac166c0c75539
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-06-29 16:10:25 +02:00
Tasuku Suzuki 282c030785 Remove property usage in QHttp2ProtocolHandler
This helps to fix build without feature.properties

Change-Id: Ia1fd2a1ca88105048e75694874058bb1292899a0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-29 11:27:31 +09:00
Qt Forward Merge Bot 134ee9d548 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I4cb91777e7ae9f462fa219d5b9ebeb277fde49c3
2019-06-29 01:00:34 +02:00
Mårten Nordheim e19d93b212 QSocks5SocketEngine: avoid dereferencing null-pointer
The header argument is optional

Change-Id: I035e11db5ee70183274afb48ba67c4d3ed2f615d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-28 12:54:43 +02:00
Timur Pocheptsov df7c97f8ee qsslsocket_openssl.cpp - restructure the code
not to resolve merge conflicts on every 5.13->dev merge.

Change-Id: Id41a7efff52148fe46bedcde828646694fd1764d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-06-28 05:41:16 +02:00
Qt Forward Merge Bot 7265fb0597 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I912bd8851c390302414d3dfb3c8220df5a0d5630
2019-06-28 01:00:23 +02:00
Friedemann Kleint 3ccbf19761 QSocks5SocketEnginePrivate::sendRequestMethod(): Fix out of bounds string access
Fix warnings showing in network tests:

tst_QNetworkReply::headFromHttp(rfc+socks):
  Using QCharRef with an index pointing outside the valid range of a QString. The corresponding behavior is deprecated, and will be changed in a future version of Qt.

introduced by qtbase/c2d2757bccc68e1b981df059786c2e76f2969530 (5.14).

Replace index access by QByteArray::append().

Change-Id: I0b4aed563d076237d5f9cc6aa438c7502eb3568c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
 
 
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-28 00:24:32 +02:00
Marc Mutz e36e32c213 QBearerEngine: fix const-correctness of a loop with const-propagating QESDP
The loop iterates over a collection of QExplicitSharedDataPointer, which
traditionally doesn't propagate const. In Qt 6, it will, so prepare the
code for this change, by taking the loop variable by non-const reference.

Since the loop is followed by container.clear(), make it a consume-loop
by looping over qExchange(container, {}).

Change-Id: If12ab005544183598fd76a0c486b2df1582710d5
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-06-27 20:00:21 +02:00
Liang Qi 25eb97d2d4 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	.qmake.conf
	src/network/ssl/qsslsocket_openssl.cpp

Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io>
Change-Id: Ibb57a0548b4977797b400637487a56245ac1c024
2019-06-27 14:38:03 +02:00
Simon Hausmann 7810209ba3 Merge remote-tracking branch 'origin/dev' into wip/qt6
Change-Id: I4ea2b77cc201daed94fbe321f146dfd20365a534
2019-06-26 11:33:19 +02:00
Leander Beernaert a9d2c5b6d7 Android: Final changes for APK generation
Generate the ${MODULE}-android-dependencies.xml for the androiddeployqt
tool. This will ensure all the right plugins and dependencies are
packaged when generating the apk.

This change also changes the visibility for executable to default/public.
Not having this will cause the application to crash as we can't locate
main() in the executable (shared library).

Additionally pro2cmake conversion script has been updated to perform
the required conversions for the Android settings.

Finally, the 6 projects in QtBase that have Android dependencies have
been updated with the new script and the step that produces the xml
files in run at the end in QtPostProcess.cmake.

Change-Id: I9774ba1b123bc11cae972fa37054ef2c51988498
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-26 08:34:37 +00:00
Mårten Nordheim 89655525ae QHttpNetworkConnection: Change assert to early return and handle Http2
When using a http proxy (and presumably other proxies) we might have
failed/aborted (aka "finished") the request and _then_ receive a
"proxy authentication required" message from the proxy. In this case
there is no spdy/http2 reply in the queue, so asserting is wrong.

Change-Id: Id9b76b580299f6a6cd6efad62d6aaf63183816fb
Fixes: QTBUG-76426
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-25 17:20:35 +02:00
Mårten Nordheim e211697962 QHttpNetworkConnectionChannel: don't close if we're already closing
In some scenarios with QNAM we call socket->close, leading to a flush,
leading to an error, leading to another error emission... To work
around this scenario we stop trying to close the socket if the network
channel is already closing.

Change-Id: Id15504f476484ce61f11ba83a5755ceb5f581f9b
Fixes: QTBUG-76567
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-24 19:11:04 +02:00
Liang Qi aedc59b1c3 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/corelib/io/qstorageinfo_unix.cpp
	src/network/ssl/qsslsocket_openssl.cpp

Change-Id: Ibc9ce799bef62d60d616beaa9fbde8ebeadfbc20
2019-06-25 15:47:42 +02:00
Liang Qi bd9959bde2 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	.qmake.conf
	src/gui/painting/qdrawhelper.cpp
	src/network/ssl/qsslsocket_openssl.cpp
	src/widgets/styles/qstylesheetstyle.cpp

Change-Id: Ibe1cd40f46a823c9e5edbe0a3cd16be1e1686b17
2019-06-20 07:50:44 +02:00
Timur Pocheptsov cdfe8c76af checkOcspResponse - remove unneeded locking
and also plain wrong comments: since we don't set verification callback
on a store - we don't have to lock (our q_X509Callback never gets called).
This change should simplify the merge with change I have in 5.12 (where
I completely got rid of locking). Since I don't care about exact errors
found (relying on the fact it's the same chain of certs we check in
SSL_connect/SSL_accept), for now we don't try to extract them from
OCSP_basic_verify. In fufure, if these chains are different, we
can create a temporary store (see how it's done in 'verify', for example)
and set a VF callback on this store.

Change-Id: I4a36e19836d19c2ea95c869dcfe85f49fe723ff0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-17 14:55:55 +02:00
Liang Qi ef37ab9970 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	.qmake.conf
	src/gui/painting/qdrawhelper.cpp
	src/gui/text/qdistancefield.cpp
	src/gui/text/qdistancefield_p.h
	src/network/ssl/qsslsocket_openssl.cpp
	src/plugins/platforms/android/qandroidinputcontext.cpp
	src/widgets/styles/qstylesheetstyle.cpp

Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io>
Change-Id: Ia7daad21f077ea889898f17734ec46303e71fe6b
2019-06-25 13:04:27 +02:00
Alexandru Croitor fe3bd212fc Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
This changes many different CMake places to mention Qt6 instead of
Qt5.

Note that some old qt5 cmake config files in corelib are probably not
needed anymore, but I still renamed and kept them for now.

Change-Id: Ie69e81540386a5af153f76c0242e18d48211bec4
2019-06-14 16:31:09 +02:00
Timur Pocheptsov fe6e54fb1f TLS socket: make verification callback lock-free (OpenSSL)
When our QSslSocketBackendPrivate (OpenSSL backend) was developed,
the ancient versions of OpenSSL did not have an API needed to pass
an application-specific data into verification callback. Thus the
developers resorted to the use of global variables (a list with errors)
and locks. Some of our auto-tests use QNAM and in-process server.
Whenever the client (essentially qhttpthreadeddelegate) and the server
live in different threads, any use of 'https' is dead-lock prone,
which recent events demonstrated and which were previously observed
but not understood properly (rare occasions, not always easy to
reproduce). Now we fix this for good by removing locking.

There are two places (in 5.12) where these locks are needed:

1. Before calling SSL_connect/SSL_accept (handshake) - here
   we reuse the same trick we do in PSK callback ('SSL' has
   an external data set, and it's 'this', meaning an object
   of type QSslSocketBackendPrivate).

2. The static member function 'verify', here we do not have
   'SSL', but we have our temporary 'X509_STORE', to which
   we can directly attach an external data - a pointer to
   a vector to collect verification errors.

Note, this change assumes that OpenSSL Qt is build/linked
against is at least of version 1.0.1 - we set external data
on SSL unconditionally (no version checks).

Fixes: QTBUG-76157
Change-Id: I05c98e77dfd5fb0c2c260fb6c463732facf53ffc
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-06-17 15:21:11 +02:00
Alexandru Croitor 2a302a7361 Merge remote-tracking branch 'origin/dev' into wip/qt6
Change-Id: Iac12a37fa6536ebe30e6548f7c54ec0c402c9f5d
2019-06-06 19:00:41 +02:00
Cristian Adam 1143b07948 CMake: MinGW build fix
Change-Id: Ica47189fd8f1811ce9e726fa0416e6ea8ae7af63
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-05 14:48:56 +00:00
Alexandru Croitor 891c897b80 Regenerate the main qtbase modules
There were some changes done in pro2cmake, so regenerate the main
qtbase modules to keep everything up to date.

Some new whitespace got added.
Some special cases were removed (ZLIB).
Some opengl code got moved around.
Some plugin types were added.
And some other minor things.

Change-Id: Ie8cba4a9aa6b4b163c39d6cf546ea9e0bfc05c01
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-05 07:39:14 +00:00
Leander Beernaert ff68d84d32 Android: Fix incorrect build config for Network
Fix build configuration for qdnslookup implementations for android as
UNIX is also set when building for Android. We should only have the more
specific conditions enabled.

Change-Id: Ib891df34e5569a20b03ce270e1eab080325549b9
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-04 10:17:35 +00:00
Marc Mutz 84536ae61e QNetworkAcesssCache: replace a QQueue with a std::vector
The code didn't really use the queue as a queue, because it enqueued
one at a time, but dequeued potentially many. Even if it actually
decays to actual queue behavior: for the small number of elements
expected, a vector would still be preferable over the per-element
allocation performed by QQueue.

Because std::vector doesn't have pop_front(), I took the liberty of
making the dequeue code easier to read by using find_if with an
aptly-named lambda.

Change-Id: I09bd7ede50cb8ab5af5d1fc2ede37a3731f67070
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-20 20:19:14 +02:00
Alexandru Croitor 5591e82135 Merge remote-tracking branch 'origin/dev' into wip/cmake
Change-Id: Ide5b3408bfefca410323cf26b810b44c06d3a227
2019-06-03 15:51:20 +02:00
Alexandru Croitor e4079eca49 Merge remote-tracking branch 'origin/dev' into wip/cmake
Take 5.

Change-Id: Ifb2d20e95ba824e45e667fba6c2ba45389991cc3
2019-06-03 15:14:42 +02:00
Giuseppe D'Angelo 34fe9232db Port from QAtomic::load() to loadRelaxed()
Semi-automated, just needed ~20 manual fixes:

$ find \( -iname \*.cpp -or -iname \*.h \) -exec perl -pe 's/(\.|->)load\(\)/$1loadRelaxed\(\)/g' -i \{\} +
$ find \( -iname \*.cpp -or -iname \*.h \) -exec perl -pe 's/(\.|->)store\(/$1storeRelaxed\(/g' -i \{\} +

It can be easily improved (e.g. for store check that there are no commas
after the opening parens). The most common offender is QLibrary::load,
and some code using std::atomic directly.

Change-Id: I07c38a3c8ed32c924ef4999e85c7e45cf48f0f6c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-06-20 20:48:59 +02:00
Marc Mutz 2596a8a55c QSharedNetworkSessionManager: clean up
Under no circumstance must Qt code define a non-public qHash()
overload of a public Qt type. If you can't provide a public qHash()
for the type, you can't use QHash. Period. This is because if we don't
provide a qHash() function, the user will have to provide one, and
then we have an ODR violation, iow: UB.

So, port away from QHash and qHash and use std::unordered_map, which
allows to pass a custom hash function - just what we needed.

Also fix other issues of the code:

- Use a function object as the deleter of the QSharedPointer, to allow
  inlining the function call.

- Avoid double lookup in case of a cache miss.

- Don't use direct initialization syntax for pointer variables. That's
  just ... weird.

Change-Id: Ica8bff728c1bd1cbb2fb43aa03a99bcb7ac2f7cc
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-28 21:53:17 +02:00
Edward Welbourne a3b931e7c4 Construct from an array instead of assigning just past a string's end
Assigning past the end used to be supported, but isn't a good way to
do the job.  Exposed by a qtxmlpatterns test that exercised this code,
which gets a warning thanks to Giuseppe's recent changes to QCharRef.

Task-number: QTBUG-76070
Change-Id: Ic254c7ffce60e3b2aafce76ab03ea5db8c68fafc
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-28 14:46:18 +02:00
Friedemann Kleint 518cf3312c Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Ia279fc4a8226626041c772902a07b2f90f37b53b
2019-05-27 15:34:10 +02:00
Lorn Potter 800941df89 wasm: fix empty body on POST
this also optimizes network post method handling

Task-number: QTBUG-75660
Change-Id: Ibb0d01f2cc2b2bc7802598c4f6f04b04882c12ca
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-05-22 16:58:34 +10:00
Alexandru Croitor b1746c1da1 Regenerate network
And add the first version of the .prev file.

Change-Id: I9d298e483032081a02a63b4f887f4d682ea7ccd4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:35:38 +00:00
Marc Mutz 2f542dd996 Use QStringView overloads of <QDate/Time>::toString()
There are no QLatin1String overloads, so using QLatin1String as the
format string produced a temporary QString. Use QStringViewLiteral
instead.

Change-Id: I682eb8cfaa98fdcfb491edd290460db636a98a9f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-29 18:24:29 +02:00
Giuseppe D'Angelo e9f383497f QSslSocket: do not bypass the base class' overrides
Change-Id: Ifd0842c70af764827a7e815efbc96da6cad99672
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-14 11:19:26 +00:00
Giuseppe D'Angelo cceeb1ee7e QHsts: code tidies
1) Remove a use-after-move. It was benign because the move didn't
actually trigger move assignment, as the original object was const.

2) Remove a usage of insert(hint), as the hint was always end(),
and there is no reason to believe that that's the insertion place.

Change-Id: I71aac8cdc9fb85b6ecef3695bae7b21f022bb60b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
 
 
 
 
 
 
 
 
 
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-13 19:12:17 +02:00
Friedemann Kleint ce211b1f83 Fix qdoc warnings for Qt 5.14
src/corelib/tools/qstring.cpp:9505:clang found diagnostics parsing \fn int QLatin1String::indexOf(QLatin1String l1, int from Qt::CaseSensitivity cs) const error: expected ')' error: out-of-line definition of 'indexOf' does not match any declaration in 'QLatin1String'
src/corelib/tools/qstringview.cpp:723:clang found diagnostics parsing \fn qsizetype QStringView::indexOf(QLatin1String l1, qsizetype from Qt::CaseSensitivity cs) const error: expected ')' error: out-of-line definition of 'indexOf' does not match any declaration in 'QStringView'
src/corelib/tools/qstringview.cpp:822:Unknown command '\t'
src/corelib/tools/qstringview.cpp:825:Unknown command '\t'
src/corelib/tools/qstringview.cpp:826:Unknown command '\t'
src/corelib/tools/qstringview.cpp:831:Unknown command '\t'
src/corelib/global/qnamespace.qdoc:2448:Undocumented enum item 'MarkdownText' in Qt::TextFormat
src/corelib/tools/qstringmatcher.cpp:183:No such parameter 'pattern' in QStringMatcher::QStringMatcher()
src/network/ssl/qsslerror.cpp:58:Undocumented enum item 'CertificateStatusUnknown' in QSslError::SslError
src/gui/kernel/qevent.cpp:5321:Undocumented parameter 'screenOrientation' in QScreenOrientationChangeEvent::QScreenOrientationChangeEvent()
src/gui/kernel/qevent.cpp:5321:Undocumented parameter 'screen' in QScreenOrientationChangeEvent::QScreenOrientationChangeEvent()
src/gui/kernel/qevent.cpp:5321:No such parameter 'orientation' in QScreenOrientationChangeEvent::QScreenOrientationChangeEvent()
src/gui/text/qtextformat.cpp:532:Undocumented enum item 'BlockCodeLanguage' in QTextFormat::Property
src/gui/text/qtextformat.cpp:532:Undocumented enum item 'BlockQuoteLevel' in QTextFormat::Property
src/gui/text/qtextformat.cpp:532:Undocumented enum item 'BlockMarker' in QTextFormat::Property
src/gui/text/qtextdocument.cpp:3294:Undocumented parameter 'features' in QTextDocument::toMarkdown()
src/gui/painting/qcolorspace.cpp:659:Undocumented parameter 'colorSpace1' in QColorSpace::operator!=()
src/gui/painting/qcolorspace.cpp:659:Undocumented parameter 'colorSpace2' in QColorSpace::operator!=()
src/gui/painting/qcolorspace.cpp:659:No such parameter 'colorspace1' in QColorSpace::operator!=()
src/gui/painting/qcolorspace.cpp:659:No such parameter 'colorspace2' in QColorSpace::operator!=()
examples/widgets/doc/src/icons.qdoc:269:Command '\snippet (//! [43])' failed at end of file 'widgets/icons/iconpreviewarea.cpp'
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogRetryButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogYesToAllButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogIgnoreButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogNoToAllButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogAbortButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_RestoreDefaultsButton' in QStyle::StandardPixmap
src/widgets/styles/qstyle.cpp:2026:Undocumented enum item 'SP_DialogSaveAllButton' in QStyle::StandardPixmap
src/testlib/qtestcase.qdoc:439:Undocumented parameter 'TestClass' in QTest::QTEST_HIGHDPI_SCALING_MAIN
src/testlib/qtestcase.qdoc:452:Undocumented parameter 'TestClass' in QTest::QTEST_NO_HIGHDPI_SCALING_MAIN

Change-Id: Ib0e9bf81c5caaa6b1fc644ac92085af47c600e0e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-05-21 17:39:58 +02:00
Qt Forward Merge Bot e56d3b03ed Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/corelib/tools/qlocale_data_p.h
        (Regenerated by running the scripts in util/local_database/)
	src/gui/opengl/qopengltextureuploader.cpp

Done-With: Edward Welbourne <edward.welbourne@qt.io>
Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io>
Change-Id: I12df7f066ed0a25eb109f61c4b8d8dea63b683e2
2019-05-09 13:06:11 +00:00
Mårten Nordheim 8adcfa8b24 WinRT: Fix crash in native socket engine during close
Make sure "this" still exists when we're done sending the
readNotification.

The crash manifested itself when connecting to certain websites as they
would reply with status 403, then close the connection. On our end we
would then handle this "remote host closed" followed by handling the
data we received. The http code handles the data successfully and sees
we are done and there is nothing more to do, so it closes the
connection. Which leads to closing QAbstractSocket, which closes
native socket again and then deletes it.

Fixes: QTBUG-75620
Change-Id: I233c67f359aa8234f1a2c4ea9463108b08c9165f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-05-08 13:26:03 +00:00
Christian Ehrlicher 69f6cab0af Doc: replace even more null/0/nullptr with \nullptr macro
Try to replace all wordings like '.. to 0' with '.. to \nullptr'. Also
checked for 'null pointer' and similar.

Change-Id: I73341f59ba51e0798e816a8b1a532c7c7374b74a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-05-08 12:48:32 +00:00
Marc Mutz 0efc6a88b6 QtNetwork: port away from Java-style iterators
They are going to be deprecated.

Change-Id: Ib021aad108dc021df76ae21d1db6c8a1a734893d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-21 08:56:33 +02:00
Alexandru Croitor f26a156dd3 Fix special cases in network
Change-Id: I66cc33afe3bfdf4e86dfeb0b341770355f59c0da
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-06 10:49:00 +00:00
Tobias Hunger 7874ce7801 CMake: Improve mapping of libraries
Merge all data related to mapping libraries into one data structure
in helper.py.

Use that data for everything related to library mapping.

This change enables way more features now like e.g. adding find_package
calls into generated files.

Change-Id: Ibbd2a1063cbeb65277582d434a6a672d62fc170b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-03 13:42:25 +00:00
Tobias Hunger 9618434de5 CMake: configurejson2cmake: Do not generate useless OPTIONALs
Do not set properties of packages to type OPTIONAL. That is the default
anyway.

Update generator script and generated files.

Change-Id: I7a4d043b69c93ce8c2929a2e27ac6a07e4e6d8cc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-03 13:39:48 +00:00
Topi Reinio 4ad915425d Doc: Replace example file lists with links to code.qt.io
Instead of generating .html page for each file in an example
project, generate links to code.qt.io, under the correct
path and branch, where the user can browse the example source.

Store all URLs under QT_INSTALL_DOCS/config where other qt5
submodules can access them. The repository name appears in
the URL, so we cannot define a single URL for all modules.

Task-number: QTBUG-74391
Change-Id: I63d4d6d2c352877797b1ee8e057d48c0cd789bff
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-05-03 14:24:42 +02:00
Liang Qi 98813ead02 Merge remote-tracking branch 'origin/5.13.0' into 5.13
Change-Id: I39248f6c561c6274ab5ead64238dd2f80e167eee
2019-06-17 10:17:56 +02:00
Mårten Nordheim 2e7b7e4c90 QSslSocket: add and set the TLSv1.3-specific PSK callback
If this callback is not set then OpenSSL will call the callback
used for <= TLS 1.2 unconditionally when connecting. If using PSK it
will call it again later once the preshared key is needed.
We don't currently handle the TLSv1.3 PSK, but we definitely should.
But for now we can work around it - when psk_use_session_callback is
called we simply change the PSK callback to a dummy function whose only
purpose is to restore the old callback.

This is mostly done to keep behavior the same as it is now for users
(and to keep our tests running).

Later we can add a new signal and handle this new feature properly.

Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit d8efc8d718)

Task-number: QTBUG-67463
Change-Id: I4aca4ae73ec4be7c4f82a85e8864de103f35a834
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-06-13 04:16:09 +00:00
Volker Hilsheimer 29425f1e77 Update documentation regarding import/export restrictions for OpenSSL
From Qt 5.12.5 and 5.13.0 on we ship OpenSSL 1.1.x libraries with Qt
through the binary installers, as Qt is a general purpose toolkit and
as such not subject to import/export restrictions.

However, application developers still have to take care of the
relevant requirements and compliance before distributing OpenSSL.

Change-Id: I1c3622116eadda270d638becfa23a5493976e919
Fixes: QTBUG-75814
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
2019-06-04 07:48:34 +00:00
Lorn Potter 762d4afdc1 wasm: fix crash in case network js event becomes null or undefined
also fix data progress

Task-number: QTBUG-75489
Change-Id: I5222fda64d258a6ae78ba0ca20194b81c289c27e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-05-27 11:08:47 +10:00
Liang Qi b5c2535eb0 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/3rdparty/pcre2/qt_attribution.json

Change-Id: Ibae941cb12662f27bd6962ee02bc235971c59a15
2019-05-03 10:44:24 +02:00
Christian Kamm 6c0ced4b7a HTTP2: Fix handling of GOAWAY frames
Previously there were two issues:
- A QNetworkReply could be aborted but be in NoError state.
  (GOAWAY frame with 0 as error)
- Streams in a connection would be aborted prematurely when a GOAWAY
  frame with a lastStreamId of 2^31-1 was received.

Fixes: QTBUG-73947
Change-Id: Iddee9385c1db3cc4bb80e07efac7220fff787bf3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-03 03:57:05 +00:00
Alexandru Croitor 9b0b464e82 Write find_dependency() calls in Qt Module config files
This change introduces a new function called qt_find_package()
which can take an extra option called PROVIDED_TARGETS, which
associates targets with the package that defines those targets.
This is done by setting the INTERFACE_QT_PACKAGE_NAME and
INTERFACE_QT_PACKAGE_VERSION properties on the imported targets.

This information allows us to generate appropriate find_dependency()
calls in a module's Config file for third party libraries.

For example when an application links against QtCore, it should also
link against zlib and atomic libraries. In order to do that, the
library locations first have to be found by CMake. This is achieved by
embedding find_dependency(ZLIB) and find_dependency(Atomic) in
Qt5CoreDependencies.cmake which is included by Qt5CoreConfig.cmake.
The latter is picked up when an application project contains
find_package(Qt5Core), and thus all linking dependencies are resolved.

The information 'which package provides which targets' is contained
in the python json2cmake conversion script. The generated output of
the script contains qt_find_package() calls that represent that
information.

The Qt5CoreDependencies.cmake file and which which dependencies it
contains is generated at the QtPostProcess stop.

Note that for non-static Qt builds, we only need to propagate public
3rd party libraries. For static builds, we need all third party
libraries.

In order for the INTERFACE_QT_PACKAGE_NAME property to be read in any
scope, the targets on which the property is set, have to be GLOBAL.

Also for applications and other modules to find all required third
party libraries, we have to install all our custom Find modules, and
make sure they define INTERFACE IMPORTED libraries, and not just
IMPORTED libraries.

Change-Id: I694d6e32d05b96d5e241df0156fc79d0029426aa
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-02 07:30:42 +00:00
Qt Forward Merge Bot 9f1a1e320c Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Ibce9bfef928ce39070183c488ce86ae32e5ea705
2019-04-28 01:00:26 +02:00
Volker Hilsheimer a8a05b00fc Document that QHostInfo does not guarantee to return all IP addresses
Using getaddrinfo, which implements RFC 6724, implies that addresses
that are not needed will be trimmed. In particular, IPv6 addresses are
often not returned.

Also move the implementation detail documentation down in the text, it's
a detail with little relevance for the usage of the class, but makes for
a good opener regarding this behavior.

Change-Id: I516a64f0b39a6a06621a63c1d5236544b7758049
Fixes: QTBUG-31865
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-25 22:24:08 +00:00
Qt Forward Merge Bot cb10ec56f7 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I26da00aa71b0f0b91c9bfb4a9e8550345ee62875
2019-04-24 01:00:13 +02:00
Volker Hilsheimer 6a21dc9d73 Fix typo in QHostAddress::SpecialAddress description
Change-Id: Ia4269b74eb85d5055ca0e893277be92df012c000
Fixes: QTBUG-75332
Reviewed-by: Akihito Izawa <akihito.izawa@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-04-23 08:45:15 +00:00
Tobias Hunger 6630937e63 Merge commit 'dev' into 'wip/cmake-merge'
Change-Id: I176c40d031be26a1dd1cf08843e448a660598783
2019-04-16 16:32:08 +02:00
Liang Qi 3c662bf13c Merge remote-tracking branch 'origin/5.13.0' into 5.13
Conflicts:
	src/plugins/platforms/wasm/qwasmintegration.cpp
	src/plugins/platforms/wasm/qwasmintegration.h

Change-Id: Idf4c7936513fb1f21daa8f6105b8545f13447bb8
2019-06-11 10:30:48 +02:00
Martin Smith 0e2c013a45 doc: Add dontdocument.qdoc files
Each module that has publically declared classes or structs
that are not meant to be documented is given a dontdocument.qdoc
file to tell qdoc that these classes are not meant to be
documentented. Then qdoc will not print warnings about missing
\class comments for these classes and structs.

Change-Id: I9195f0b546032e1c7642c9da34d85a0a4a9bfb08
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-05-07 16:58:09 +02:00
Tobias Hunger 92b0d7b911 CMake: Support /nolink libraries
Add a helper function to QtBuild that generates Foo_nolink versions
of Foo library targets.

Map 'Foo/nolink' libs found in qmake to Foo_nolink.

Automatically run helper function to create _nolink targets as
part of extend_target.

Change-Id: I4c23ea68b3037d23c9a31d4ac272a6bd0565f7c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-04-10 09:36:40 +00:00
Liang Qi a20da2353c Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	mkspecs/win32-clang-msvc/qmake.conf
	src/gui/image/qpnghandler.cpp

Change-Id: Ied79d02912ffb3a307a99483df7db08c7f9d0cd8
2019-04-10 08:16:20 +02:00
Qt Forward Merge Bot 93acb76222 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I05d14a40e17554691bad369d0363e88413afd9b3
2019-04-09 01:00:06 +02:00
Andre Hartmann a02a2a1e73 QUdpSocket: Convert snippet to functor connect
Change-Id: Ice210b979a1dd948cd8d95003bd50a4b71d91852
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-08 17:00:13 +00:00
Andre Hartmann 6863262ded QUdpSocket: Add missing \since to docs
QNetworkDatagram was introduced together with
these methods in Qt 5.8 (commit 4da2dda2aa)

Change-Id: I454c26ebf6f94988cada8ac9315db1d43a31a595
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-08 17:00:05 +00:00
Davide Beatrici e199710d0e QHostInfo: use dlsym() with RTLD_DEFAULT in case libs cannot be loaded
The current code only tries to load the required functions from
LIBRESOLV_SO (if defined) and resolv, but on FreeBSD they are in libc:
https://www.freebsd.org/cgi/man.cgi?query=res_query&sektion=3&apropos=0&manpath=freebsd

This commit changes the code so that, after failing to load the
non-existent libraries, it attempts to load the functions with dlsym()
using the special handle RTLD_DEFAULT, which searches for the specified
symbol in the loaded libraries.

This is a follow-up to 8eeb5150ed.

Change-Id: I19d90b0ca8703398bf4f5f4edd5ae31e346ef251
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-06 17:30:27 +00:00
Allan Sandfeld Jensen 1ef274fb94 Replace qMove with std::move
Change-Id: I67df3ae6b5db0a158f86e75b99f422bd13853bc9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-04-06 11:00:38 +00:00
Davide Beatrici 8eeb5150ed QDnsLookup: fix "Resolver functions not found" error on FreeBSD
The current code only tries to load the required functions from
LIBRESOLV_SO (if defined) and resolv, but on FreeBSD they are in libc:
https://www.freebsd.org/cgi/man.cgi?query=res_query&sektion=3&apropos=0&manpath=freebsd

This commit changes the code so that, after failing to load the
non-existent libraries, it attempts to load the functions with dlsym()
using the special handle RTLD_DEFAULT, which searches for the specified
symbol in the loaded libraries.

Task-number: QTBUG-74844
Change-Id: If97aaae233cabbfa01c30d26d9a7fb01ec3ff5c2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-06 01:29:31 +00:00
Qt Forward Merge Bot ed485243b5 Merge "Merge remote-tracking branch 'origin/5.13' into dev" into refs/staging/dev 2019-04-04 23:01:17 +00:00
Allan Sandfeld Jensen 8d7c97d428 Remove remaining Q_DECL_NOEXCEPT/Q_DECL_NOTHROW usage
Change-Id: I91ac9e714a465cab226b211812aa46e8fe5ff2ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-04 18:01:38 +00:00
Alexandru Croitor 547c7f8ca5 Fix architecture conditions
The actual variable that contains the architecture is
TEST_architecture_arch. TEST_architecture only contains the value
if the test was performed or not.

Fix the conversion script and all the generated files.

Change-Id: Icb3480832cab894948f4fef03b8bc8187cab6152
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-03 09:00:08 +00:00
Liang Qi 29f01b32f5 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/configure.json

Change-Id: I93ac67f3bf4844bc7c691183e94bceb922b7b919
2019-03-31 12:39:42 +02:00
Qt Forward Merge Bot 0a7302abbc Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I9935bacae0d6ba532418fc3d28adbc7ca1463604
2019-03-30 01:00:07 +01:00
Alexey Edelev 20b7e18146 Fix a crash in QHttp2ProtocolHandler in h2c-direct mode
After 'h2c' mode was implemented with the proper protocol
upgrade, the previously working 'direct connection' mode
was lost for clear text connections due to the erroneous
logic in the constructor: having !channel->ssl does not
necessary mean we started with HTTP/1.1 request, including
protocol upgrade header; it can also mean we connected a
plain socket and immediately sending h2 frames, without
any H2 negotiation at all.

Fixes: QTBUG-74765
Change-Id: Ice466d6bffb40048b7ab46fb064f2d3d795a12aa
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-29 14:31:31 +00:00
Mårten Nordheim a06dfed4cc tst_qsslkey: test AES encryption in the 'encrypt' test
And export the required symbols in OpenSSL so we can run the test there
as well even if it's not needed for any functionality.

Change-Id: I4246d2b0bbdd42079d255f97f3c66ce8bb37390b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-26 13:08:16 +00:00
Mårten Nordheim 03ada0217c WinRT: Add support for AES-encrypted keys
Task-number: QTBUG-54422
Change-Id: Icbf2b153edacb348e475d6adb9aecb63519874de
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-03-26 13:08:14 +00:00
Morten Johan Sørvig f4ac50a838 wasm: Use common “qt” prefix for exported functions
Prevent namespace collisions and make sure Qt functions
are grouped together.

Change-Id: I217188ee93e4300e273d10a79d6014179fc5a1ef
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-03-26 10:26:51 +00:00
Friedemann Kleint 8f1acd29e4 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I71cc71881fb638e207d83a8733bad8f267701c0f
2019-03-26 08:27:02 +01:00
Friedemann Kleint 7f635d9777 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I38389a69411f4549fed432f1181dbe23398b34a2
2019-03-26 08:24:59 +01:00
Mårten Nordheim 9e61cec791 Network cache: Stop treating no-cache like no-store
In the QNetworkAccessManager machinery we would treat "no-cache" as if
it meant "don't cache" while in reality it means "don't return these
cached elements without making sure they're up-to-date"

At the same time as this change is made let's add test data for
"no-store", which replaces the "no-cache" test data.

Fixes: QTBUG-71896
Change-Id: Ieda98f3982884ccc839cac2420c777968c786f6e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
2019-03-22 13:25:54 +00:00
Qt Forward Merge Bot f2eadc65c3 Merge "Merge remote-tracking branch 'origin/5.12.4' into 5.12" 2019-06-17 12:29:53 +02:00
Mårten Nordheim d8efc8d718 QSslSocket: add and set the TLSv1.3-specific PSK callback
If this callback is not set then OpenSSL will call the callback
used for <= TLS 1.2 unconditionally when connecting. If using PSK it
will call it again later once the preshared key is needed.
We don't currently handle the TLSv1.3 PSK, but we definitely should.
But for now we can work around it - when psk_use_session_callback is
called we simply change the PSK callback to a dummy function whose only
purpose is to restore the old callback.

This is mostly done to keep behavior the same as it is now for users
(and to keep our tests running).

Later we can add a new signal and handle this new feature properly.

Task-number: QTBUG-67463
Change-Id: I4aca4ae73ec4be7c4f82a85e8864de103f35a834
Reviewed-by: Simo Fält <simo.falt@qt.io>
2019-06-12 22:59:14 +02:00
Val Doroshchuk 9b6928b7cc Fix crash when app is going to shutdown but conf manager is requested
If the app is finished and going to shutdown,
qNetworkConfigurationManagerPrivate() returns nullptr.

Change-Id: I01915021d8698802b3a1d0dee43203cd3d4aba74
Task-number: QTBUG-76090
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-06-12 08:26:54 +00:00
Qt Forward Merge Bot 6893919b0c Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/gui/kernel/qplatformintegration.cpp
	src/gui/kernel/qplatformintegration.h
	src/plugins/platforms/wasm/qwasmintegration.cpp
	src/plugins/platforms/xcb/qxcbconnection_screens.cpp

Change-Id: I15063d42e9a1e226d9d2d2d372f75141b84c5c1b
2019-03-20 14:09:30 +01:00
Marc Mutz cd563b3497 QNetworkConfiguration: remove unused member 'serviceNetworkMembers'
It's never set anywhere, neiher in QtBase nor in any other Qt module.

So, remove.

Change-Id: If616d350a1c1c74f6f3e87f8cd98ccb3bff5cf70
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-06-14 21:38:56 +02:00
Liang Qi b1a216649e Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	qmake/generators/makefile.cpp
	qmake/generators/unix/unixmake2.cpp
	src/corelib/thread/qthread_unix.cpp
	tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp

Change-Id: I1df0d4ba20685de7f9300bf07458c13376493408
2019-06-14 13:45:18 +02:00
Alexandru Croitor 3f03917b54 Fix Windows build
- Fix qmake build
- Fix QtNetwork moc-ing, by including the moc files
  inside the cpp files
- Fix sql odbc plugin by including QT_PLUGIN define
- Fix Boostrap to link against the Platform target, to get the
  correct Unicode and WIN64 defines.
- Fix vulkan headers to be found
- Fix freetype bzip and png unresolved symbols / linker issues
  when building minimal platform plugin (also need to make
  sure to use the vcpkg toolchain instead of CMAKE_PREFIX_PATH
  because then find_package is overridden, which does magic
  to properly propagate static library dependencies).
- Fix qfilesystementry test not to be built without private
  tests feature (it led to undefined symbols issues).
- Make sure to remove QT_NO_CAST_TO_ASCII define when building
  QtCore, so that the qstringbuilder3 test builds
  successfully.

Task-number: QTBUG-74140
Change-Id: I353d08392b604d55f8e62cdd8696d1e19a3c084a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:34:52 +00:00
Alexandru Croitor 4f1a155909 Regenerate cmake files from configure.json files
The new files represent the json features more closely.
This helps with various build issues as well, like dynamicgl
feature not being present before.

Change-Id: I433592f48e0550700226a635492a3ce15af743c1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:34:43 +00:00
Morten Johan Sørvig cac487f051 wasm: QNAM: support relative urls
We can pass these through to to the browser, which
will resolve them relative to the current html file.

Task-number: QTBUG-74289
Change-Id: I595f30456de55da4f1432fb997d381940f51c5f9
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-03-18 14:27:29 +00:00
Qt Forward Merge Bot 11b9c813e6 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Ief0a0b754c104d5348fee9ee15e967bd37c526f8
2019-03-16 01:01:30 +01:00
Liang Qi 8cc8eb8f24 Merge "Merge remote-tracking branch 'origin/5.13' into dev" into refs/staging/dev 2019-03-15 19:04:30 +00:00
Mårten Nordheim 7111ba1736 Schannel: support for AES-encrypted keys
Task-number: QTBUG-54422
Change-Id: I7387cdf9ca927c91cccf3dab7d2deb577ce71802
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-03-15 17:46:58 +00:00
Friedemann Kleint 4554fa7b19 Fix some qdoc warnings
src/network/ssl/qsslsocket.cpp:1501: (qdoc) warning: Can't link to 'QSslConfiguration::defaultCaCertificates()'
src/network/ssl/qsslsocket.cpp:1482: (qdoc) warning: Can't link to 'QSslConfiguration::defaultCaCertificates()'
src/network/ssl/qsslsocket.cpp:1513: (qdoc) warning: Can't link to 'QSslConfiguration::defaultCaCertificates()'
src/network/ssl/qsslsocket.cpp:1119: (qdoc) warning: Can't link to 'QSslConfiguration::setDefaultCiphers()'
src/network/ssl/qsslsocket.cpp:1119: (qdoc) warning: Can't link to 'QSslConfiguration::defaultCiphers()'
src/gui/opengl/qopengltexture.cpp:4137: (qdoc) warning: Can't link to 'setComparisonFunction()'
src/widgets/dialogs/qfilesystemmodel.cpp:1215: (qdoc) warning: Undocumented return value (hint: use 'return' or 'returns' in the text
src/widgets/graphicsview/qgraphicswidget.cpp:1229: (qdoc) warning: Undocumented return value (hint: use 'return' or 'returns' in the text
src/widgets/graphicsview/qgraphicsscene.cpp:3313: (qdoc) warning: Undocumented return value (hint: use 'return' or 'returns' in the text
src/gui/painting/qpaintengine_raster.cpp:3438: (qdoc) warning: Undocumented return value (hint: use 'return' or 'returns' in the text
src/widgets/widgets/qtextedit.cpp:2544: (qdoc) warning: Overrides a previous doc
src/widgets/widgets/qplaintextedit.cpp:2932: (qdoc) warning: (The previous doc is here)

Change-Id: I0c68c59a87eb6a5d9e974f857af6aca0c6e0672d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-03-15 13:13:00 +00:00
Qt Forward Merge Bot a1808c5dbe Merge remote-tracking branch 'origin/5.12.2' into 5.12
Change-Id: I5f9d8090a07056411fb65d7de60eb679d00e99a3
2019-03-15 11:10:10 +01:00
Qt Forward Merge Bot 32084b0733 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/tools/qcollator_win.cpp

Change-Id: I6d806d7c58b2057ebde3ad915bb5551f34b700e5
2019-03-14 10:49:29 +01:00
Kevin Funk 41e7b71c41 More nullptr usage in headers
Diff generated by running clang-tidy's modernize-use-nullptr checker on
the CMake-based Qt version.

Skipping src/3rdparty, examples/, tests/

Change-Id: Ib182074e2e2fd52f63093f73b3e2e4c0cb7af188
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-14 07:37:52 +00:00
Lars Knoll 5652d33f97 Bump version to Qt 6
Needed to disable QT_NO_UNSHARABLE_CONTAINERS, as this
triggers asserts.

QMetaType also has some Qt 6 specific code disabled to
get things to compile.

Fix various details in autotests to accommodate for
the changes with Qt 6.

Add a workaround for black lists on macos, where
QSysInfo::productType() now returns 'macos' and not
'osx' anymore.

Change-Id: Ie26afb12a2aac36521472715934a7e34639ea4d0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-14 12:14:08 +00:00
Joerg Bornemann ce1830fd21 Migrate Windows system libs to external dependencies
Started-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Change-Id: I211ce3252b836894aeeac1c85eb316d9596bca57
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-05-08 08:30:02 +00:00
Lars Knoll 92f9842732 Deprecate conversion functions between QList and QSet
Users should use range constructors instead to do the conversion.
Keep conversion methods between QList and QVector as these will turn
into a no-op in Qt 6, whereas forcing people to use range constructors
would lead to deep copies of the data.

Change-Id: Id9fc9e4d007044e019826da523e8418857c91283
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-07 14:15:44 +00:00
Liang Qi c2b553784d Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/kernel/qobject.cpp
	src/corelib/kernel/qvariant.h
	src/corelib/tools/qlist.h

Done-With: Milian Wolff <milian.wolff@kdab.com>
Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io>
Change-Id: I6803f7239aa137a51a7467fab7cc7a01302a848d
2019-05-07 11:58:30 +02:00
Edward Welbourne 5146582b8d Compile-fix: add private/ prefix to qnetconmonitor_p.h
Build was failing without it.

Change-Id: I23a6e8a359e6208f78fa9ef571b8b27f8ecb3628
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-06 15:32:12 +00:00
Timur Pocheptsov 402cb62d5d Introduce QNetworkConnection/Status/Monitor
Private classes to replace broken or even not working at all 'session management'
and 'bearer manager' (on at least two major platforms we support). This
implementation is macOS/iOS-specific and uses SystemConfiguration framework,
or more precisely SCNetworkReachability's part of it.

Task-number: QTBUG-40332
Change-Id: Iac5f44c4063c4092b93b8cf2bde3fb2c524855b3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-02 05:07:39 +00:00
Allan Sandfeld Jensen b32b61f17e Remove handling of missing Q_COMPILER_RVALUE_REFS
Remove remaining handling of missing support for rvalue refs.

Change-Id: I78bab8bccfeeb9c76f464f345874364a37e4840a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-05-01 20:24:45 +00:00
Volker Hilsheimer dc3e5c4838 Consolidate Unix and Windows implementations of QHostInfo::fromName
The implementations were practically identical, so we can just move the
code into qhostinfo.cpp, cleaning up things along the way.

Since QHostInfoAgent is an internal class, add the shared code as
additional static helper functions. And since half the code already used
QCoreApplication::translate anyway, we can remove the QObject
inheritance which was only added for getting a tr().

Change-Id: I58eafbdc3e7d06d2e898486a1add63cd63d98c96
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-30 10:57:56 +00:00
Jesus Fernandez 8e82e536cd FTP: Workaround for servers without HELP command support
Ignores errors produced by the HELP command. It will continue
executing the commands sent to QFtp when a server does not have a
HELP command implemented. Commands SIZE, MDTM, and PWD are not going
to be used if the HELP command failed.

[ChangeLog][QtNetwork][QNetworkAccessManager] Don't fail when FTP does
not implement the HELP command.

Task-number: QTBUG-69477
Change-Id: I0ebd51b134535730c6bef83de1abf1a427b8d2ce
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-04-29 14:10:34 +00:00
Mårten Nordheim 8059762565 Set 'originalRequest' in QNetworkReplyImpl
It's what's returned when calling request() on a QNetworkReply, but for
QNetworkReplyImpl (the implementation used for e.g. FTP) it was not set,
so it returned a default object.

Change-Id: Id82f7920e4268c1a7743e681fc503bcd28889b6e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-04-29 08:19:13 +00:00
Qt Forward Merge Bot 4a54e8fd82 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Ic712e8a84b01b212bb1121d7a2c9b85e0d2da9da
2019-04-29 01:00:22 +02:00
Liang Qi c3c16e907e Merge "Merge remote-tracking branch 'origin/5.13' into dev" into refs/staging/dev 2019-04-24 11:35:09 +00:00
Liang Qi dc37318684 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/gui/util/qshaderformat.cpp
	src/gui/util/qshaderformat_p.h
	src/widgets/graphicsview/qgraphicsitem_p.h

Change-Id: Idafd88eb9a0a15b4af29f6143d009c1ec8ceecca
2019-04-24 09:52:30 +02:00
Volker Hilsheimer c17d6d4e46 Fix compiling with QHOSTINFO_DEBUG enabled
Since we require getaddrinfo and freeaddrinfo, those symbols are
not resolved dynamically, and will never be null, which causes compile
errors.

Correctly appending a string literal shuts up compiler warnings.

Change-Id: I0096dca6a77ad86e0c89890444b8d7bbb38a40f2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-24 07:06:38 +00:00
Samuel Gaist e2906ea5c4 QRegExp include cleanup
QRegExp includes can be found in several files where there's not even a
use of the class. This patch aims to avoid needless includes as well as
follow the "include only what you use" moto.

This patch removes a QRegExp include from the QStringList header which
means that there is likely going to be code breaking since QStringList
is used in many places and would get QRegExp in.

[ChangeLog][Potentially Source-Incompatible Changes] qstringlist.h no
longer includes qregexp.h.

Change-Id: I32847532f16e419d4cb735ddc11a26551127e923
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-19 21:21:17 +00:00
Konstantin Shegunov 642ef0c731 Clear SSL key data as soon as possible when move-assigning
Move-assign uses qSwap to exchange the private pointer and thus can
extend the lifetime of sensitive data. The move assignment operator
is changed so it releases the private data as soon as possible.

[ChangeLog][QtNetwork][QSslKey] Key data is cleared as soon as
possible when move-assigning.

Change-Id: Iebd029bf657acfe000417ce648e3b3829948c0e5
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2019-04-18 08:38:29 +00:00
Timur Pocheptsov 5e74505c33 QOcspResponse - fix broken documentation
After the 'other' parameter in the "defaulted" definitions was
removed to get rid of 'unused variable' error, docs were not
updated properly, still referring to non-existing 'other'
parameter.

Change-Id: I3acbebfa5f1cf915d46a5bbf1b4a1ea18374b565
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-12 08:56:30 +00:00
Lorn Potter a9cd8ce296 wasm: fix error report when network request is cancelled
Fixes: QTBUG-73346
Change-Id: I8aaf8fe45f3014e2c9187c554ed86a4d29c03c0b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-03-11 23:05:10 +00:00
Tobias Hunger 4471249d33 CMake: Re-generate CMakeLists.txt file for network
Change-Id: Ib75578958a98947efbca853692b24528c1a3e8a5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-11 09:14:22 +00:00
Qt Forward Merge Bot 261c0dedac Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I056b658ffe9390dfcbe2787e2bddc7f4e9b389dd
2019-03-09 01:00:55 +01:00
Qt Forward Merge Bot fbc9fb233d Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Ica3f89ace33585ad7854417a328156f5a68e2a00
2019-03-09 01:00:20 +01:00
Timur Pocheptsov 01a5434252 QSslKey - add a support for AES encrypted keys
for SecureTransport backend. OpenSSL, while reading
RSA/DSA, is internally calling EVP_BytesToKey that
essentially does the same thing this patch does in
'deriveAesKey' and thus able to correctly decrypt
whatever it first encrypted (while generating/
encrypting keys).

Fixes: QTBUG-54422
Change-Id: Ia9f7599c5b19bf364c179f2abd2aab7ea5359a65
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-08 05:36:14 +00:00
Friedemann Kleint 859f837d46 Fix some qdoc warnings
src/corelib/itemmodels/qtransposeproxymodel.cpp:166: (qdoc) warning: Unknown command '\details'
src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp:102: (qdoc) warning: '\brief' statement does not end with a full stop.
src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp:233: (qdoc) warning: Undocumented parameter 'index' in QConcatenateTablesProxyModel::flags()
src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp:165: (qdoc) warning: Undocumented parameter 'proxyIndex' in QConcatenateTablesProxyModel::mapToSource()
src/corelib/io/qresource.cpp:275: (qdoc) warning: Can't link to 'isCopressed()'
src/corelib/io/qresource.cpp:555: (qdoc) warning: Can't link to 'compressionType()'
src/network/ssl/qocspresponse.cpp:47: (qdoc) warning: '\brief' statement does not end with a full stop.
src/network/ssl/qocspresponse.cpp:47: (qdoc) warning: Can't link to 'QSslSocket::ocspResponse()'
src/gui/image/qimage.cpp:2247: (qdoc) warning: Undocumented parameter 'f' in QImage::convertTo()
src/gui/image/qimage.cpp:2247: (qdoc) warning: No such parameter 'format' in QImage::convertTo()
src/gui/text/qtextformat.cpp:1420: (qdoc) warning: Undocumented parameter 'styleName' in QTextCharFormat::setFontStyleName()
src/gui/text/qtextformat.cpp:1420: (qdoc) warning: No such parameter 'style' in QTextCharFormat::setFontStyleName()
src/widgets/dialogs/qdialog.cpp:151: (qdoc) warning: Unknown command '\p'
src/widgets/dialogs/qdialog.cpp:167: (qdoc) warning: Unknown command '\p'
src/widgets/dialogs/qdialog.cpp:167: (qdoc) warning: Unknown command '\p'
src/widgets/dialogs/qdialog.cpp:168: (qdoc) warning: Unknown command '\p'

Change-Id: Ide52b70f8e72d53767d489ce1a413cf4c2dce7df
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2019-03-07 15:39:07 +00:00
Timur Pocheptsov 1af234f24e QSslKey - clean up the code a bit (SecureTransport)
To get rid of different warnings (visible in qt-creator at least).

Change-Id: Ic7b57cbd56494704eda3f0616fcd901a8fab63db
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-07 02:56:32 +00:00
Timur Pocheptsov ef840bef5c SecureTransport - make 'securetransport' feature public
Given the current feature disparity, it makes sense to give our users
ability to detect if they can use some feature or not in their application
code, using our 'modern' QT_CONFIG(securetransport). Accordingly, use this
new syntax in our own auto-tests.

Change-Id: Ib33b03e7e602e9f8b0db8251377c89dbaada1049
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-07 02:56:21 +00:00
Timur Pocheptsov fd5e42957d QOcspResponse - fix a broken build
At least on RHEL 7.4 I have compilation errors (unused parameters).
Since this is our own CI machine, I suspect something is not right
with our bloody CI - if the breaking change managed to merge in
the first place.

Change-Id: I681ff2b5fa34495a2e3ca0849a5b1963f75fd621
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-06 14:25:03 +00:00
Liang Qi 2add2dbdaa Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/network/access/http2/hpacktable_p.h

Change-Id: Ie0c296667dfdebba84f4858056a1ac80c24ee7df
2019-03-06 12:31:50 +01:00
Mårten Nordheim e431a3ac02 Don't retry a ssl connection if encryption was never finished
As explained in the inline comment we don't actually have a
protocol handler until we're done encrypting when we use SSL, but we
would still retry the connection if an error occurred between
"connected" and "encrypted". This would then lead us to fail an assert
that checked if a protocol handler had been set

Fixes: QTBUG-47822
Change-Id: If7f4ef4f70e72b764f492e7ced5a9349b3a421d2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-06 11:08:19 +00:00
Konstantin Shegunov c212128a67 Add input check for QSslSocket::setPrivateKey
[ChangeLog][QtNetwork][QSslSocket] Added runtime validation of the SSL
private key when it is loaded through a file path.

Task-number: QTBUG-72016
Change-Id: Ie92c3a2fbf3ba896c4c838e03d677426be56a5db
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-03-05 18:39:34 +00:00
Lorn Potter 7789b77458 wasm: fix corrupt downloads
This would only ever put the first 16k into the buffer that gets read,
so this 16k would get repeated until the size of the download.

Task-number: QTBUG-74123
Change-Id: Ia53bedf6a8754d9fd83fd0ab62866cfa5af5cc1a
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-03-04 20:38:09 +00:00
Timur Pocheptsov ef5aefb062 Hpack - fix the static lookup
'accept' breaks the order, making the static table unsorted and thus
std::lower_bound cannot find it and we always index it in a dynamic
table. Also, make this static table accessible to auto-test.
Plus fix some warnings quite annoyingly visible in qt-creator.

Fixes: QTBUG-74161
Change-Id: I47410f2ef974ac92797c9804aa55cb5c36a436c4
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-04 16:18:14 +00:00
Lars Schmertmann c6153660e4 Extend the test for QSslKey
Check if QSslKey::handle() returns data representing the
same key information as that passed to the constructor.

Task-number: QTBUG-64495
Change-Id: I1a91264e6f6d92d259b51fca9de00fcbfd5cc845
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-02 14:26:59 +00:00
Jędrzej Nowacki b33eb93891 Disable DTLS is UDP socket is disabled
The implementation of DTLS uses UDP socket.

Change-Id: I8be5c286a47abe9fa80a5a0e139dedc2f297992d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-03-01 20:14:05 +00:00
Jędrzej Nowacki 62f6fb3017 Fix compilation without DTLS
Change-Id: I6062c4454c547b943d7ef26b22eeccf566888767
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-03-01 20:12:44 +00:00
Marc Mutz a7e9fab3e9 Use QtPrivate::QHashCombine in qHash(QSslError)
It's the same operations as boost::hash_combine, but without
explicit magic numbers.

Change-Id: Id65b6f6b7be3070e4ec349ed0cc062af473a95b3
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-27 17:38:43 +02:00
Tasuku Suzuki 12e0c7cbe0 Fix network build without feature.networkproxy
Change-Id: I832db8e9e13b93d7613bdf890fa6c16be78b3b28
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-27 14:36:46 +09:00
Qt Forward Merge Bot c6fc2bc3e2 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I14eaabe98845445a9ea5266872cc1797786cfe04
2019-02-27 01:00:45 +01:00
Joerg Bornemann 90959f7080 Add all library dependencies for static OpenSSL builds on Windows
Static builds of OpenSSL can now be linked with -openssl-linked without
passing additional library dependencies like user32 or advapi32.

Fixes: QTBUG-73205
Change-Id: I66c13096b0a1466c1e6dfbd014123e18655270e6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-25 19:07:46 +00:00
Sandro Mani 93b7b0ec76 Add support for SPNEGO/Negotiate authentication
This commit adds support for single-sign-on SPNEGO/Negotiate
authentication to QAuthenticator, using SSPI on Windows and GSSAPI on
other platforms (if KRB5 GSSAPI is available).

[ChangeLog][QtNetwork][QAuthenticator] Add support for SPNEGO/Negotiate

Task-number: QTBUG-4117
Change-Id: Ie246b887db3fd6201b7ed30b023feca292cd6530
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-02-25 15:22:23 +00:00
Robert Loehning 85b0ce8ca3 Fix can not -> cannot
Change-Id: Ie9992f67ca59aff662a4be046ace08640e7c2714
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-02-25 13:03:45 +00:00
Qt Forward Merge Bot 2a1292b916 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I4b56ce8c76729d9fc60995564299f8f27336fcde
2019-02-22 19:59:08 +01:00
Timur Pocheptsov 2be7746e09 Fix a typo
in a comment.

Change-Id: I10252b2e732636993daba6b72ed86116691f2030
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2019-02-22 14:18:00 +00:00
Mårten Nordheim cd816d4b6a Add setAutoDeleteReplies to QNetworkAccessManager
Following the introduction of AutoDeleteReplyOnFinishAttribute to
QNetworkRequest it seems natural to make it easy to enable for all
replies created with the current QNetworkAccessManager.

[ChangeLog][QtNetwork][QNetworkAccessManager] Added setAutoDeleteReplies
to QNetworkAccessManager to enable the AutoDeleteReplyOnFinishAttribute
attribute for all QNetworkRequests that are passed to
QNetworkAccessManager.

Change-Id: I7f96dd1fc9a899328e89732be17780b4e710c2a2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-15 12:48:07 +00:00
Mårten Nordheim 927eba344c Introduce AutoDeleteReplyOnFinishAttribute for QNetworkRequest
[ChangeLog][QtNetwork][QNetworkRequest] Added the
AutoDeleteReplyOnFinishAttribute attribute to QNetworkRequest, which
makes QNetworkAccessManager delete the QNetworkReply after it has
emitted the "finished" signal.

Change-Id: I03d4ac0830137882e51dd28795a8ec817762a300
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-15 12:47:55 +00:00
Marc Mutz 8b771e782d QNetworkReply: replace a QQueue with a std::vector
The 'queue' was never used as a queue: it was populated, and then
exchanged into a local copy to be consumed in a loop. This loop used
dequeue(), but of course it could just const-iterate the container and
dump it as the end, since the member variable was already reset at
that point, no-one could tell the difference from the outside.

So, no need for a queue. A vector will do very nicely.

The loop now uses ranged-for and qExchange(), greatly simplifying the
code over the old version.

Add another qExchange() call as a drive-by.

Change-Id: I6147453dc9edfe9500833627b123bb3a31114651
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-05-15 09:00:10 +00:00
Liang Qi 388fe97f2a Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/tools/qstring.cpp

Change-Id: I81dbf90fc936c9bf08197baefa071117bddb1c63
2019-05-13 08:04:58 +02:00
Timur Pocheptsov 8ac77123e2 QNetworkStatusMonitor - make it always enabled on Darwin
Also undo changes in setNetworkAccessible and setConfiguration
since they introduced a change in behavior, which results
in auto-test failing.

Change-Id: I5d74c47338bff8f964ba2e27256902c79303e00f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-10 10:45:43 +00:00
Christian Ehrlicher a4b8e7141b QtGui/Network/OpenGl/Widgets/Xml: use \nullptr in documentation
Replace null and '\c nullptr' with \nullptr in the documentation.

Change-Id: I58934eea06943309ba895833f1991629870ab45b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-02-20 18:58:58 +00:00
Eric Lemanissier da4ab444ff Feature 'ocsp' - fix a broken win-32 build
Change-Id: I0fcec3a555a8c5ff5b5faff3cff16b173e9b9950
Fixes: QTBUG-73322
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-19 10:57:59 +00:00
Christian Ehrlicher 46278b77aa QtNetwork: compile with QT_DISABLE_DEPRECATED_BEFORE=0x050d00
Don't call or implement functions which are not available when compiling
with QT_DISABLE_DEPRECATED_BEFORE=0x050d00

Change-Id: I9e059cfa6d5e70c5672d50d7d4dae7483314ad17
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-18 18:35:02 +00:00
Simon Hausmann ec410d31cd Fix source file name on Android
Change-Id: I0814cb02ef7205bb5d197ea0e5cc7e26a8bc15eb
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-18 16:43:41 +00:00
Timur Pocheptsov 28a87f1f21 OCSP response - fix API
as proposed in the API review.

Change-Id: I607a38d24d533da59fc0d33dac886fa7693ed6c8
Fixes: QTBUG-73739
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-02-18 16:03:56 +00:00
Alessandro Portale 5993bea032 Fix: "Missing emit keyword on signal call"
[-Wclazy-incorrect-emit]

Change-Id: I32cf5db522dcb14bbe5151914624979929eeb52e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2019-02-13 12:23:57 +00:00
Alessandro Portale 6c9b17d446 Fix: "Emit keyword being used with non-signal"
[-Wclazy-incorrect-emit]

Change-Id: I21f69d7f6b161d70a687ab17b2821a595c113ec7
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2019-02-12 21:56:56 +00:00
Liang Qi 863cea981b cmake: add localserver in network
Change-Id: I319ffad73bb5f8285b1b2fa583d813667498c3dd
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-12 14:40:30 +00:00
Albert Astals Cid 92f81ebc21 configurejson2cmake.py: openssl -> OpenSSL mapping
Change-Id: I29480dfbd4f144e3d5620b43419ec46fb866cf4b
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 11:22:53 +00:00
Albert Astals Cid 2e64ac90d8 cmake: also write FIXME on the configure.cmake for 'use'
Since most of the times it means we need to link with some other stuff

Change-Id: I06262d4403225bca7a5e68d47145fefcf6702e5a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:22:02 +00:00
Mårten Nordheim c41efe7373 Schannel: slightly optimize memory-usage for encryption
Change-Id: I0f4b372ad3a0cd5e6730ed2e23e738fb06b2aad5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-02-08 14:37:50 +00:00
Liang Qi fbfacd33be Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/android/templates/AndroidManifest.xml
	src/network/ssl/qsslsocket_mac.cpp
	src/widgets/styles/qstylesheetstyle.cpp
	tests/auto/corelib/kernel/qtimer/BLACKLIST
	tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
	tests/auto/testlib/selftests/expected_blacklisted.lightxml
	tests/auto/testlib/selftests/expected_blacklisted.tap
	tests/auto/testlib/selftests/expected_blacklisted.teamcity
	tests/auto/testlib/selftests/expected_blacklisted.txt
	tests/auto/testlib/selftests/expected_blacklisted.xml
	tests/auto/testlib/selftests/expected_blacklisted.xunitxml
	tests/auto/testlib/selftests/expected_float.tap
	tests/auto/testlib/selftests/expected_float.teamcity
	tests/auto/testlib/selftests/expected_float.txt
	tests/auto/testlib/selftests/expected_float.xunitxml

Done-With: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Done-With: Edward Welbourne <edward.welbourne@qt.io>
Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io>
Change-Id: If93cc432a56ae3ac1b6533d0028e4dc497415a52
2019-02-08 12:31:02 +01:00
Timur Pocheptsov 71a1c66ab9 Feature 'ocsp' - fix a broken win-64 build
Alas, we have to do the job ossl_typ.h failed to - undef macros
coming from wincrypt.h (?) and clashing with identifiers/naming
conventions not exactly very wisely chosen by OpenSSL.

Change-Id: I1725c4f769be64dbb391d040b2c1574b20b65151
Fixes: QTBUG-73322
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-02-06 22:12:10 +00:00
Andy Shaw 5133e22ae2 Add support for setting the peer verify name via the QNetwork* classes
This adds functions to QNetworkRequest to be able to set the
peerVerifyName. An overload of connectToHostEncrypted is also added to
have an extra argument to allow setting it directly in this manner too.

Fixes: QTBUG-73125
Change-Id: I371e90035b53a74c9eb3cef64f367e307dce073e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-06 22:11:17 +00:00
Qt Forward Merge Bot 670b843369 Merge "Merge remote-tracking branch 'origin/5.12.1' into 5.12" into refs/staging/5.12 2019-02-06 10:52:13 +00:00
Qt Forward Merge Bot e4c29088c8 Merge remote-tracking branch 'origin/5.12.1' into 5.12
Change-Id: I486f3c51df4b60fe60b75ba642636a835a75f731
2019-02-06 10:28:01 +01:00
Joerg Bornemann 05bcfb9011 Normalize some SIGNAL/SLOT signatures
...for a minor performance gain.

Change-Id: I4bef867055e069926fdc24fa98a6f94b6a0630e2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-02-06 07:17:44 +00:00
Timur Pocheptsov c306fdff77 http2: skip content-length for content-encoding: gzip/deflate
The protocol handler now matches HTTP/1.1's protocol handler.

Change-Id: Id55c10900e2bcd46e5dc65c63db77097eb4818b6
Fixes: QTBUG-73364
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-02-01 14:32:12 +00:00
Paul Wicking 2bc362c9fa Merge dev into 5.13
Change-Id: I8113c6d8735a151bd152e6096f8c8b8e63a05474
2019-02-01 13:33:26 +01:00
Friedemann Kleint 5de981d3bc QtNetwork: Fix some messages in OCSP stapling
Amends a8412dc020.

Task-number: QTBUG-12812
Task-number: QTBUG-17158
Change-Id: Idcdf9ad39a43373097e2c3f31a62ce1b3cb46c22
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-01 10:35:09 +00:00
André Klitzing 93a803a6de Fix session resumption with OpenSSL 1.1
OpenSSL 1.1.0 and higher requires SSL_shutdown to mark a
session as resumable.

QHttpNetworkConnection/Channel tries to re-use one shared SSL
context (and the session) for its 'channels'. The session is
marked as non-resumable without shutdown sent/received.
This makes it useless for QHttpNetworkConnection.

See: https://github.com/openssl/openssl/issues/1550
Fixes: QTBUG-71967
Change-Id: Iaaceb18c4c5a090f997f9850981a27f04f1f8b06
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-31 10:36:50 +00:00
Albert Astals Cid 5e339a0f97 cmake: Add trivial FindLibproxy.cmake
And fix link to it

Change-Id: Ie4f29a35a83d19ab83933faf3bcd7d62cffa68b8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 15:07:54 +00:00
Liang Qi 4bb44a17f6 CMake: fix build for QtNetwork on macOS
Change-Id: I32e4550d67e9d72b56de4aafaddec5e2f80792b8
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-01-29 09:30:44 +00:00
Mårten Nordheim 698078680f Schannel: Add ALPN support
[ChangeLog][QtNetwork][SSL] The Schannel backend now supports ALPN and
thus HTTP/2.

Change-Id: I1819a936ec3c9e0118b9dad12681f791262d4db2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-28 21:35:11 +00:00
Christian Ehrlicher 4ee8f75572 QtBase: replace 0 with \nullptr in documentation
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.

Change-Id: I914b6b2151554c06acc2d244eff004524cbb9a82
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-28 19:37:30 +00:00
Liang Qi e3621dd6bd Merge "Merge remote-tracking branch 'origin/5.12' into dev" into refs/staging/dev 2019-01-28 19:30:32 +00:00
Mårten Nordheim d8d60696da QSslSocket: Fix isMatchingHostname when the CN is an IP Address
Change-Id: Id083c1434fcb3a64af40e6f8df720719c1029ca7
Fixes: QTBUG-73289
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-28 14:03:30 +00:00
Joerg Bornemann b6afde4dd0 Fix corewlan configure test
Configure is unable to find header files that are located in
frameworks. Work around that by specifying "include" on "test" level
instead of "headers" on "corewlan" level.

This amends commit 10adbc4f0f.

Change-Id: I0650585eb9a4e881dc2e3733d8db40c6e50cf1f3
Fixes: QTBUG-72964
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-01-28 11:29:49 +00:00
Timur Pocheptsov a389a9f440 SecureTransport: do not set max protocol version
This is similar to a change we approved recently in OpenSSL back-end.
Similar to OpenSSL, not setting the upper limit on protocols allowed
to negotiate/use, neatly ends up with the highest available, which
is ... TLS 1.2 at the moment, but will silently switch to 1.3 etc.
This was also recommended by Apple's engineer who closed a related
bug report with 'Won't do' - "do not limit the max, you'll always
have the real max supported'. Also, while at the moment we do
not allow QSsl::TlsV1_3 and QSsl::TlsV1_3OrLater, if we managed
to negotiate it - report it properly, not as 'Unknown'.

Task-number: QTBUG-67463
Change-Id: I3f46ea525f06edca03259123809f3b7b1191b1ee
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-01-27 20:13:57 +00:00
Timur Pocheptsov 315969725d QSslSocket - make ocsp response into ... ocsp responseS
If later we try to introduce multiple ocsp support, the API returning
a single response will be somewhat broken and illogical/not clear
how to use at all. Let's return a vector of responses (for now it's
one, can change in future). This makes isNull() redundant on a
response, also, we now need 'subject' - a cert that response was for.

Change-Id: Ibbd9dec163b53906b2fd61fa31c43db7d08adc4d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-01-27 10:41:51 +00:00
Liang Qi 980567b3a3 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	src/android/templates/AndroidManifest.xml
	tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp

Change-Id: I4c9679e3a8ebba118fbf4772301ff8fde60455b9
2019-01-26 08:35:40 +01:00
Tobias Hunger e2ff9e3b99 CMake: Introduce Q_OBJECT qdoc macro
CMake's moc file scanning is rather primitive: It will run moc on any
file containing a line that starts with Q_OBJECT (and similar macros).

We have four files in QtBase that contain such a macro at the start
of the line in a qdoc comment. These four files were excluded from
automatic moc handling by cmake, which is not ideal, since this will
silently fail when somebody actually adds a Q_OBJECT macro in code.

This patch introduces a macro Q_OBJECT for qdoc. This macro will be
replaced with Q_OBJECT in the generated documentation.  While not nice,
at least a failure to use \Q_OBJECT is noticeable: Moc will warn about
the file.

Change-Id: I829893c1166eee306fe30058d4ea0256affd45ea
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-25 14:33:26 +00:00
Mårten Nordheim 58c9c4b609 Ssl: Add support for IP-address in alternate subject name
While it's not common it still occurs, perhaps especially with 127.0.0.1

Can be tested by attempting to connect to https://1.1.1.1/ using Qt.

Change-Id: Idad56476597ab570b8347236ff700fa66ab5b1f4
Fixes: QTBUG-71828
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-24 15:24:14 +00:00
Timur Pocheptsov e649c4143e Add class QOcspResponse, providing a bit more details
about why a certificate was revoked (if it was) and the responder's
certificate, if we managed to verify a signature, as was previously
shortly discussed in the 'OCSP stapling' patch-set. Auto-test update
will be in a separate patch.

[ChangeLog][QtNetwork][Ssl] Added class QOcspResponse as a part of
 OCSP stapling support.

Change-Id: I4e17fb6fc4c3dae0b8ad04ff2897a4823736d16e
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-23 17:02:40 +00:00
Qt Forward Merge Bot e3da05f39a Merge remote-tracking branch 'origin/5.12.1' into 5.12
Change-Id: Icebd151eae0cf9d400319a42573290d1a911ce26
2019-01-23 10:13:29 +01:00
Mårten Nordheim 7cc6f78dd4 Schannel support
Adds support for Schannel, an SSL backend for Windows, as an
alternative to OpenSSL.

[ChangeLog][QtNetwork][Ssl] Added support for Schannel on Desktop
Windows. To build Qt with Schannel support use '-schannel' during
configure.

Task-number: QTBUG-62637
Change-Id: Ic4fb8ed3657dab994f9f4a4ac5cbddc7001a0a46
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-22 15:19:48 +00:00
Timur Pocheptsov 77b969cb84 OCSP - simplify feature test
Make it more like feature 'dtls' test.

Change-Id: I29f5e9337d99440015431a8cfb001f5fb28e1c5f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-01-22 09:43:27 +00:00
Qt Forward Merge Bot f94ca82e0f Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	.qmake.conf

Change-Id: Ibfcb30053f3aacb8ec2ec480e146538c9bf440ea
2019-01-21 13:03:09 +01:00
Edward Welbourne 2ab139596d Fix alignment-warnings about Q_DECLARE_PRIVATE's casts
Q_DECLARE_PRIVATE gets used in the declaration of the public class,
where the private class is typically visible only as a forward-decl,
with no knowledge of what it's based on; consequently, the macro is
obliged to use reinterpret_cast<>, which is subject to warnings when
the compiler *can* see both types and their alignments differ.  The
same applies to Q_DECLARE_PRIVATE_D.

So suppress gcc's -Wcast-align around the d_func() return statements.
(If we get similar problems with other compilers we can add their
suppressions likewise; but, for now, we've only seen this on MIPS64,
where we use gcc.)  This tripped over one use of Q_DECLARE_PRIVATE in
a private Q_SLOTS: section; for some reason, gcc didn't like the
semicolon on the friend declaration.  Changing the context to plain
private fixed that.

Fixes: QTBUG-72885
Change-Id: I5edc11d46bd4eb820713adede79d53191a7e2736
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Boxiang Sun <daetalusun@gmail.com>
2019-01-15 08:31:51 +00:00
Friedemann Kleint 3eac688ec0 Documentation: Add \nullptr macro and use where applicable
Qt for Python users reading the documentation assume that int(0) can
be passed for pointer parameters. Use the newly introduced \nullptr to
disambiguate this.

In a follow-up step, the \nullptr macro can be defined as None
when generating the Qt for Python documentation.

Task-number: PYSIDE-903
Change-Id: I3a45f87175a0668ab5f3f95f0aff409f7e3ef027
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-10 22:16:07 +00:00
Lorn Potter 2780f80fae wasm: fix blob download handling
Change-Id: I34a8ec05c18b15ed71787986b5b0316693235b4d
Fixes: QTBUG-72105
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-01-09 05:05:12 +00:00
Nico Vertriest 4d9ac14bf8 Doc: Complete doc on QHostAddress::clear()
Task-number: QTBUG-31280
Change-Id: Ia9904433b0b67bead8831f2ef678b9598977df6b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-08 15:00:30 +00:00
Timur Pocheptsov 78b422c341 QNetworkReplyHttpImpl::_q_startOperation - remove a useless warning
Since it explains nothing and now, after some other bug was fixed
(see, for example, c89d0f9d53), we trigger this message on the
first request, which happens because:
- 'createSession()' indeed, creates a session, compares a previous
  kwnon state (which happens to be 'Invalid') with a current state,
  which is 'Connected' and then invokes '_q_networkSessionStateChanged'.
- '_q_networkSessionStateChanged()' on 'Connected' emits
  'networkSessionConnected()' to which a newly-created QNetworkReplyHttpImpl
  will respond with it's _q_startOperation().
- QHttpNetworkReplyImpl will also try to 'open' a session, its 'opened()'
  signal will trigger, again, 'networkSessionConnected()' and ... the
  next _q_startOperation().
Now, not to add even more twisted spaghetti if/conditions with some
unpredictable regressions, let's suppress a useless warning and
silently return. We, indeed, in 'Working' state, let's keep working.

Task-number: QTBUG-72463
Change-Id: I5282979920915ffded889c20b8ae740a46efef04
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-01-08 11:18:18 +00:00
Liang Qi 0e96b5fe48 Merge remote-tracking branch 'origin/5.12' into 5.12.1
Conflicts:
	src/widgets/kernel/qtooltip.cpp

Change-Id: Ic2f9a425359050eb56b3a4e5162cf5e3447058c8
2019-01-08 09:34:24 +01:00
Qt Forward Merge Bot c497f79ad4 Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: Ieb57137ee2b7d0c505e3531d5aa1bcb66978847e
2019-01-07 01:00:08 +01:00
Sona Kurazyan 012f7bb622 Copy backend configuration while setting dtls config
When setting dtls configuration, we should also copy
backendConfig, otherwise this setting will be ignored.

Change-Id: I4df53e8e6d8c2bd0eb7dddb9928b7883c401d60a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-01-05 09:22:36 +00:00
Liang Qi 03039979b5 Merge remote-tracking branch 'origin/5.12' into dev
Also blacklist tst_QRawFont::unsupportedWritingSystem() and
tst_QGlyphRun::mixedScripts() on windows for now.

 Conflicts:
	qmake/generators/makefile.cpp
	src/corelib/itemmodels/qstringlistmodel.cpp
	src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h
	tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp
	tests/auto/gui/text/qglyphrun/BLACKLIST
	tests/auto/gui/text/qrawfont/BLACKLIST

Task-number: QTBUG-72836
Change-Id: I10fea1493f0ae1a5708e1e48d0a4d7d6b76258b9
2019-01-04 07:33:14 +01:00
Samuel Gaist 1606a8aa1c Doc: fix typo in QAbstractSocket::bind documentation
Fixes: QTBUG-72780
Change-Id: I16d89d29f573dba37ed8e1986ed9677117ca6aad
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2019-01-03 11:38:09 +00:00
Nico Vertriest 651b4845de Doc: Fix linking errors qtbase
Change-Id: I225e59bea0a8eac14fd11ef2b091907ae955c447
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2019-01-03 09:45:23 +00:00
Thiago Macieira 804eea08b4 Work around FreeBSD 12.0 breaking source compatibility with IFM_FDDI
The macro disappeared.
qnetworkinterface_unix.cpp:467:14: error: use of undeclared identifier 'IFM_FDDI'; did you mean 'IFT_FDDI'?

Fixes: QTBUG-72775
Change-Id: I548dbfddb69b4fd6a0a3fffd1574e1ad4e670e5b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-01-01 13:58:33 +00:00
Timur Pocheptsov 3e1758e35d QSsl: do not wait for 'connected'/'encrypted' if a protocol is disabled
since we'll refuse to continue with a handshake, failing in initSslContext()
on a disabled protocol versions. Then, functions like waitForEncrypted,
connectToHostEncrypted, startServerEncryption and startClientEncryption
should either bail out early (who needs a TCP connection which we'll
abort anyway?) or bail out whenever we can, as soon as a disabled protocol
was found in a configuration. This change also makes the behavior
of different back-ends consistent, since it's a general code-path
that reports the same SslInvalidUserData error. Update auto-test to
... actually test what it claims it tests.

Task-number: QTBUG-72196
Task-number: QTBUG-72179
Change-Id: I548468993410f10c07ce5773b78f38132be8e3e0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-21 03:28:47 +00:00
Oswald Buddenhagen b6cd5fdc6b configure: inline openssl test sources
Change-Id: I47c1c43b5db30cf1d59de9c6c20ca83abef2cf8c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-12-19 19:21:59 +00:00
Lorn Potter 1387f1910b wasm: emit finished after QNetworkReply abort
Change-Id: I23445f5e0c936b82aa5d65b261d456a563deab9a
Fixes: QTBUG-72516
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-12-18 20:36:08 +00:00
Oswald Buddenhagen 10adbc4f0f configure: inline corewlan test
we have support for objc++ since 591edbb11.

Change-Id: I5f430fd7c410913d4532627d18529b077f794035
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-12-17 21:30:19 +00:00
Oswald Buddenhagen c15afc16ac configure: remove openssl placeholder source
there is no particular reason to exclude static builds from the default.
misses are cheap now, so it's fine if nothing is found.
this affects only the legacy pre-1.1 library names under windows.

Change-Id: I998b9f7bfcce42ec990a236bb44372c4d6b3f631
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-17 21:30:10 +00:00
Oswald Buddenhagen c07ab93c20 configure: adjust openssl lib names on mingw
both the mingw and msvc build have a "lib" prefix on the libraries. this
makes the msvc build unconventional, so it needs an extra source. for
the mingw build, otoh, this is the expected setup, so the source used
for unix will work just fine.

this doesn't fix any actual bug, because mingw will apparently resolve
-llibfoo to libfoo.a even though only liblibfoo.a and libfoo.lib are
documented (on mingw.org). however, this mix of conventions is ugly and
should be avoided.

Change-Id: I32b1621e4ac15db1f071c08ced738bfdafdcc11b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-12-17 21:30:05 +00:00
Oswald Buddenhagen 5485a085e6 configure: optimize the openssl feature structure
don't run the openssl_headers test pointlessly when openssl-linked is
selected but its test fails. implementing this cleanly required creating
a separate openssl-runtime feature, including 'redirecting' the -openssl
option (which is just an alias for -openssl-runtime) to it.

simplify the openssl-linked conditions: while "anything but the value
that enables it" in the 'disable' field effectively means "don't
auto-detect it", it's better to be explicit about that.

Change-Id: I6b117cc50711bb64d090fcfdb89ff009c60ed86c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-12-17 21:29:57 +00:00
Lorn Potter 87b20009cc wasm: do not revise url of queries
I think this may have been for some POST method form queries, but
obviously was missing something.

Task-number: QTBUG-72382
Change-Id: I59016776aeedf4b5599b3b44af70610babb0a61e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
2018-12-16 21:29:17 +00:00
Oswald Buddenhagen e80bf655e9 configure: verify header presence against sources
in addition to the actual library resolution, also resolve the headers
belonging to the library, to validate the include path, and possibly
ensure that the right version of the library is present.

the "include" entries were moved out of the "test" objects, and renamed
to "headers". this cleanly permits libraries without compile tests.

the headers were not put into the sources, because the variance among
the includes is generally orthogonal to the variance among the
libraries.

note that this - like the library resolution - provides no support for
darwin frameworks. consequently, the opengl libraries are excluded from
the conversion on darwin.

similarly, wasm is excluded (centrally), because emcc is magic and would
need advanced wizardry to be dealt with.

Change-Id: Ib390c75371efa2badcfec9b74274047ce67c3e5a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2018-12-14 23:44:30 +00:00
Tobias Hunger e57a94cbd8 CMake: Use AUTOMOC/AUTOUIC/AUTORCC
Change-Id: I0235ca4f227623e5937348b4b010637921dbf154
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-12-14 14:04:59 +00:00
Mårten Nordheim 81dd1bcad1 QSslSocket Doc: Don't refer to obsoleted functions
Update references in documentation from the obsoleted/deprecated version
because it doesn't make sense here to refer to these versions.

Change-Id: I5e9bdf46191e3ba0c7d91855cb3ccc30097cd412
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-12-14 10:38:18 +00:00
Giuseppe D'Angelo 13ba85a70d OpenSSL: remove some more pre-1.0 fallbacks
Again, 1.0 is required now.

Change-Id: Icca5dc38eb33c1579653d96d6c079b335a401aad
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-14 02:16:54 +00:00
Giuseppe D'Angelo fd83e03e7f OpenSSL: remove some < 1.0 codepaths
We require OpenSSL >= 1.0 now.

Change-Id: I6ffe8b2dd606d600671565ebc8bc8ac2b9e0d6c2
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-13 16:00:36 +00:00
Giuseppe D'Angelo 455951f590 OpenSSL: drop support for SSLv2 and SSLv3
As per RFC 6176 (2011) and RFC 7568 (2015).

Code-wise, we're left with the decision of what to do with a few
enumerators in QSsl::Protocol; I've made TlsV1SslV3 act as TlsV1,
and adjusted the description of AnyProtocol.
A new test was introduced - deprecatedProtocol() - to test that
we, indeed, do not allow use of SSL v2 and v3. protocol() and
protocolServerSide() were reduced to exclude the (now) no-op
and meaningless tests - neither client nor server side can
start a handshake now, since we bail out early in initSslContext().

[ChangeLog][QtNetwork][SSL] Support for SSLv2 and SSLv3
sockets has been dropped, as per RFC 6176 (2011)
and RFC 7568 (2015).

Change-Id: I2fe4e8c3e82adf7aa10d4bdc9e3f7b8c299f77b6
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-12-13 15:59:37 +00:00
Lars Knoll 4e507464e4 Use a QMultiMap for issuer/subjectInfo
The map can contain multiple entries for one key,
so a multi map is the correct data structure.

Change-Id: I852ba3548f46415d8078fd0e8fdd7953ec6c370b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-12 07:43:30 +00:00
Lars Knoll 5823d391b4 Use QMultiMap::insert() instead of insertMulti()
Change-Id: Idaeb99562d39abfd020ff81b1818cba825c4e802
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-12-12 07:43:24 +00:00
Friedemann Kleint e209321966 Use Q_DISABLE_COPY_MOVE for private classes
Change-Id: I3cfcfba892ff4a0ab4e31f308620b445162bb17b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2018-12-12 07:23:54 +00:00
Qt Forward Merge Bot a2fd99c430 Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I91e684e74c36467efda8ded6ed19791baa0c1a1f
2018-12-11 01:00:13 +01:00