summaryrefslogtreecommitdiffstats
path: root/src/network
Commit message (Collapse)AuthorAgeFilesLines
* QNativeSocketEngine: add code to receive IP header dataThiago Macieira2015-08-225-13/+169
| | | | | | | Change-Id: Iee8cbc07c4434ce9b560ffff13ca466263abcb1b Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* QNativeSocketEngine: use sendmsg/recvmsg instead of sendto/recvfromThiago Macieira2015-08-224-88/+142
| | | | | | | | | | | | We'll need to use these functions instead of the ones we're currently using in order to access the ancillary data. Note that on Windows the two functions aren't globals, but must be obtained via ioctl, which means they can fail. If they do, we fall back to using WSARecvFrom/WSASendTo Change-Id: Iee8cbc07c4434ce9b560ffff13ca4284acd24132 Reviewed-by: Richard J. Moore <rich@kde.org>
* QAbstractSocketEngine: introduce QIpPacketHeader for datagramsThiago Macieira2015-08-2212-77/+138
| | | | | | | | | | | | | | | | | | | This commit changes the readDatagram() and writeDatagram() virtual functions to take a QIpPacketHeader as meta data, instead of a QHostAddress/quint16 pair. As previously, the header is an "out" parameter for readDatagram() and an "in" parameter for writeDatagram(). The header pointer in readDatagram() is allowed to be null if the PacketHeaderOptions indicates WantNone. Otherwise, it must not be null. The extra options parameter is introduced because we may not always want all the metadata upon reception. For sending, we know what to include or not based on what's set in the incoming header parameter. QIpPacketHeader splits sender and destination because we'll be able to return both on datagram reception. Change-Id: Iee8cbc07c4434ce9b560ffff13ca4213255008c7 Reviewed-by: Richard J. Moore <rich@kde.org>
* QHostAddress: Improve code generationThiago Macieira2015-08-191-47/+52
| | | | | | | | | | | | | | Mostly related to IPv6, because Q_IPV6ADDR is an array of char, so the compilers were generating byte access to each value. Instead, force access as 32- and 64-bit in most places that make sense (64-bit access decays to 32-bit on 32-bit machines). In one isLoopback(), this is now a 128-bit access for best improvement. Some smaller improvements relating to SpecialAddress by combining the three IPv4 special addresses. Change-Id: I7de033f80b0e4431b7f1ffff13f932b1cd7b5d21 Reviewed-by: Richard J. Moore <rich@kde.org>
* Merge dev into 5.6Oswald Buddenhagen2015-08-173-5/+3
|\ | | | | | | Change-Id: I061f2513ef58f696e75b11928d89aaaf059659a3
| * QAbstractSocket::canReadLine(): remove code duplicationAlex Trotsenko2015-08-132-3/+3
| | | | | | | | | | | | | | | | Contents of the QIODevice's buffer is handled in the base implementation. Change-Id: I5a3d68e4e8dcb16d7f5ad695ac43127b8047a061 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QNetworkReplyImpl: remove unused declarationsAlex Trotsenko2015-08-111-2/+0
| | | | | | | | | | Change-Id: I844864d53d4644d57f3ca5f20b4a3f30a95fead3 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* | QHostAddress hashing: use qHashBitsThiago Macieira2015-08-161-1/+1
| | | | | | | | | | | | | | | | Instead of constructing a temporary QByteArray, which could conceivably fail, to hash those bits. Change-Id: I7de033f80b0e4431b7f1ffff13fa376302d9720f Reviewed-by: Richard J. Moore <rich@kde.org>
* | QNetworkInterface: remove fallback code for Windows pre-XP and CE pre-4Thiago Macieira2015-08-161-56/+0
| | | | | | | | | | | | | | | | All versions we support have support for the WinXP-style functions we need, so we don't need the Win2k fallback. Change-Id: I7de033f80b0e4431b7f1ffff13f99175a507a2ed Reviewed-by: Richard J. Moore <rich@kde.org>
* | Fix thread-safety of qnetworkinterface_win.cpp:resolveLibsThiago Macieira2015-08-161-3/+4
| | | | | | | | | | Change-Id: Ia4b5103c9c590c24de9a43c5c7097b0c7b83e679 Reviewed-by: Richard J. Moore <rich@kde.org>
* | QNetworkInterface: make the name lookup search numbers in string formsThiago Macieira2015-08-162-5/+21
| | | | | | | | | | | | | | | | That's how QHostAddress::scopeId() stores them, so we ought to look them up the same way. Change-Id: I7de033f80b0e4431b7f1ffff13f98cf87d45ebc6 Reviewed-by: Richard J. Moore <rich@kde.org>
* | QNetworkInterface: Merge the two sections of code that do SIOCGIFxxxThiago Macieira2015-08-161-21/+21
| | | | | | | | | | | | | | | | The separation was accidental due to refactoring. It does not need to exist. Change-Id: I7de033f80b0e4431b7f1ffff13f988adc47d57d5 Reviewed-by: Richard J. Moore <rich@kde.org>
* | QNetworkInterface: prefer SIOCGIFINDEX over if_nametoindexThiago Macieira2015-08-161-1/+6
| | | | | | | | | | | | | | | | | | | | On Linux (on a bad system without getifaddrs), the ioctl for SIOCGIFINDEX should be faster than if_nametoindex. The ioctl on the already open socket will require one syscall, while if_nametoindex will require at least one more (to open the socket), probably more. Change-Id: I7de033f80b0e4431b7f1ffff13f9888bf2044105 Reviewed-by: Richard J. Moore <rich@kde.org>
* | Add QHostAddress::isMulticastThiago Macieira2015-08-152-0/+17
| | | | | | | | | | | | | | | | This complements QHostAddress::isLoopback. The only missing check now is for the "Any" address types, though operator== is quite fast nowadays. Change-Id: Iee8cbc07c4434ce9b560ffff13cc2691e15014b6 Reviewed-by: Richard J. Moore <rich@kde.org>
* | Fix warning of unused variableThiago Macieira2015-08-151-2/+1
| | | | | | | | | | | | | | | | Only happens on systems without getifaddrs, which we aren't usually testing. Change-Id: I7de033f80b0e4431b7f1ffff13f9889f5cfdea5b Reviewed-by: Richard J. Moore <rich@kde.org>
* | QHostAddress: don't inline the parse() functionThiago Macieira2015-08-141-1/+1
| | | | | | | | | | | | | | | | It's called everywhere due to QT_ENSURE_PARSED and it's big. There's no need to duplicate it everywhere. Change-Id: I7de033f80b0e4431b7f1ffff13fa383f29114712 Reviewed-by: Richard J. Moore <rich@kde.org>
* | Doc: Remove the section about IPv6 site-local addressesThiago Macieira2015-08-131-5/+0
| | | | | | | | | | | | | | | | | | | | Site-local addresses were deprecated in RFC 3879 (September 2004) and RFC 4193 (October 2005) replaced them with Unique Local Address. ULAs are part of the global range but supposedly unique to an organization. Change-Id: I7de033f80b0e4431b7f1ffff13f98d2124c5cffc Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Merge the multiple implementations of getting the local hostnameThiago Macieira2015-08-137-99/+18
|/ | | | | | | | | | | | | | | | This commit moves the functionality from QtNetwork's QHostInfo to QtCore. Note that due to Windows ws2_32.dll's quirky behavior of requiring WSAStartup before calling gethostname, this change required moving the initialization to QtCore too. On Linux systems, gethostname() gets the name from uname(), so we bypass the middle man and save one memcpy. Change-Id: I27eaacb532114dd188c4ffff13d32655a6301346 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Set the socketType and socketProtocol earlyThiago Macieira2015-08-104-2/+10
| | | | | | | | | | The type is known (usually) right after createNewSocket, so let's just set it. They may get overwritten later (in fetchConnectionParameters), but this allows early use of setOption when we need to know the socket type. Change-Id: Iee8cbc07c4434ce9b560ffff13ca09fccb8e1662 Reviewed-by: Richard J. Moore <rich@kde.org>
* Merge remote-tracking branch 'origin/5.5' into devFrederik Gladhorn2015-08-065-8/+75
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/3rdparty/forkfd/forkfd.c src/corelib/codecs/qtextcodec.cpp src/corelib/kernel/qmetatype.cpp src/corelib/tools/qset.qdoc src/gui/accessible/qaccessible.cpp src/gui/image/qpixmapcache.cpp src/opengl/qgl.cpp src/tools/qdoc/generator.cpp src/widgets/kernel/qwidget.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I4fbe1fa756a54c6843aa75f4ef70a1069ba7b085
| * QSslSocket: Update error string in setSocketDescriptor()Kai Koehne2015-08-031-0/+1
| | | | | | | | | | | | Change-Id: I03cd3886c0e2dbb07ef8d37e75df36308ee5fea5 Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Richard J. Moore <rich@kde.org>
| * ssl: add support for EC keys to non-OpenSSL backendsJeremy Lainé2015-07-313-1/+70
| | | | | | | | | | | | | | | | Adds basic support for QSslKey reading / writing Elliptic Curve keys on backends other than OpenSSL (i.e. WinRT / SecureTransport for now). Change-Id: I67012dbe6b844a3ed5b22b63e0cdbacf0497a74a Reviewed-by: Richard J. Moore <rich@kde.org>
| * Fix SNI for TlsV1_0OrLater, TlsV1_1OrLater and TlsV1_2OrLaterAndré Klitzing2015-07-301-6/+3
| | | | | | | | | | | | | | | | | | | | Since SslV3, SslV2 and UnknownProtocol do not support it we can invert the IF clause here. Change-Id: I42e942337d01f3a8c97885b268bffa568e40d335 Task-number: QTBUG-47528 Reviewed-by: Mikkel Krautz <mikkel@krautz.dk> Reviewed-by: Richard J. Moore <rich@kde.org>
| * ssl: fix native parsing of certificates with DSA keysJeremy Lainé2015-07-281-1/+1
| | | | | | | | | | | | | | | | Fixes a typo which breaks the parsing of certificates with DSA public keys when using a non-OpenSSL backend (WinRT, SecureTransport). Change-Id: I250ba9948d5bd7739e281d7cd1b95cfbcb10e402 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* | ssl: add openssl-based QSslKeyPrivate::encrypt / decryptJeremy Lainé2015-07-204-9/+86
| | | | | | | | | | | | | | | | | | | | This adds an OpenSSL-based implementation of the QSslKeyPrivate encrypt and decrypt method. This puts both the OpenSSL-based and non-OpenSSL backends (WinRT for now) on par. Change-Id: I18a75ee5f1c223601e51ebf0933f4430e7c5c29b Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Richard J. Moore <rich@kde.org>
* | Fix nullptr literal 0s which would look odd as nullptrMarc Mutz2015-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | These all invoke the QFlags<>(Zero *) ctor, which is designed to accept a 0, but no other int. But in doing so, it requires passing a nullptr literal, and 0 is not a nullptr literal accepted under -Wzero-as-null-pointer-constant or similar warnings. Fix by using the QFlags::QFlags() ctor instead. Task-number: QTBUG-45291 Change-Id: I73f9c9f4de11eeb1ba04ace6c7121d17510ea29f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QtNetwork: Use Q_NULLPTR instead of 0 in all public headersMarc Mutz2015-07-1917-28/+28
| | | | | | | | | | | | | | | | | | This is in preparation of adding -Wzero-as-null-pointer-constant (or similar) to the headers check. Task-number: QTBUG-45291 Change-Id: I9a05d375d2d9d3ed56079ad024c89a08a290619b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add a way for auxiliary threads to handle events without CoreAppThiago Macieira2015-07-182-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Long-lived threads started by Qt itself can now receive events even if QCoreApplication hasn't been created. This is required in all threads we start that will handle events, unless we're sure that the thread will exit before the global application object begins destruction. Otherwise, those threads will have race conditions dealing with the event delivery system trying to call the QCoreApplication::notify() virtual while the object is being destroyed. Change-Id: I27eaacb532114dd188c4ffff13d4ad2a4bb443e6 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Revamp the CLOEXEC support in QtThiago Macieira2015-07-171-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The pipe2/dup3/accept4 functions and SOCK_CLOEXEC are quite old nowadays on Linux. They were introduced on Linux 2.6.28 and glibc 2.10, all from 2008. They were also picked up by uClibc in 2011 and FreeBSD as of version 10.0. So we no longer need the runtime detection of whether the feature is available. Instead, if the libc has support for it, use it unconditionally and fail at runtime if the syscall isn't implemented. Change-Id: Ib056b47dde3341ef9a52ffff13efcc39ef8dff7d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into HEADSimon Hausmann2015-07-174-55/+78
|\| | | | | | | | | | | | | Conflicts: src/plugins/platforms/windows/qwindowsopengltester.cpp Change-Id: Ia7abeba9395ccf84e2fa81b91a5725a86dedb9fe
| * Define friend functions of QSslEllipticCurve outside of classKai Koehne2015-07-161-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Define both qHash() and operator==() outside of the class, like it is already done for operator!=(). Defining it inside the class limits it to argument-dependent lookup, which in turn means that the lookup rules for operator!= and operator== were slightly different (e.g. if one would compare variables of a type that is implicitly convertible to QSslEllipticCurve). As a side-effect, this also fixes a qdoc warning. Change-Id: I40ab2f8cd2b6b5f42481dd254229a88b678f3f15 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * ssl: improve SecureTransport error loggingJeremy Lainé2015-07-151-42/+45
| | | | | | | | | | | | | | | | | | | | | | This improves SecureTransport logging consistency: - include error code in SSL error when a native backend call fails - use qt.network.ssl category for debug / warning messages - do not use duplicate qWarning when error is already reported via QSslError Change-Id: I52d457b11f0cef2cc3579305e457663b61b92f3f Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
| * Make sure to report correct NetworkAccessibilityLorn Potter2015-07-152-8/+19
| | | | | | | | | | | | | | Task-number: QTBUG-46323 Change-Id: Ibdeb3280091a97d785d4314340678a63e88fb219 Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
| * ssl: fix SecureTransport handling of remote host disconnectJeremy Lainé2015-07-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently when the remote server disconnects gracefully (for example upon returning an HTTP request with Connection: close) the call to SSLRead will return errSSLCloseGraceful which is incorrectly reported as QAbstractSocket::SslInternalError. This patch aligns the behavior with that of the OpenSSL backend and instead reports QAbstractSocket::RemoteHostClosedError. Change-Id: I8c6679280ac0c6fbd71d5f0d29b25f692eca5b24 Task-number: QTBUG-47154 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* | Mark QNetworkReplyImplPrivate::InternalNotifications as primitiveMarc Mutz2015-07-161-0/+1
| | | | | | | | | | | | | | Held in QQueue, thus QList. Change-Id: I9d13babb4c08eddbd67ede31da48c0c5f5fdbd5f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QSslSocket: remove code duplicationMarc Mutz2015-07-131-19/+13
| | | | | | | | | | | | | | | | | | | | | | Since findAllLibSsl() and findAllLibCrypto() differ only in the filter passed to QDir::entryList(), so Extract Method findAllLibs(). In the new function, cache the filters QStringList instead of re-create it in every loop iteration. Change-Id: I1bdd05e83fa1f9bb3f47b9b2ae5da9654ec1525b Reviewed-by: Richard J. Moore <rich@kde.org>
* | QSslSocket: use function objects and algorithms when sorting library pathsMarc Mutz2015-07-131-24/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The first change is to make libGreaterThan a function object. This allows all compilers to inline the comparison into the sort implementation. The second change is to use QString::splitRef instead of QString::split to extract the components. The third is to extract the element comparison into a function object and replace the rest of libGreaterThan with a suitable call to std::lexicographical_compare, rendering most code comments (present or missing) moot. Change-Id: I3a761d721aa7cf5fa727dcc4ddca4b922f413899 Reviewed-by: Richard J. Moore <rich@kde.org>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-07-0114-204/+159
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/global/qglobal.h src/corelib/global/qsysinfo.h src/corelib/global/qsystemdetection.h src/corelib/kernel/qobjectdefs.h src/plugins/plugins.pro tests/auto/widgets/itemviews/qlistview/qlistview.pro Change-Id: Ib55aa79d707c4c1453fb9d697f6cf92211ed665c
| * Replace MAC OS X with OS XNico Vertriest2015-06-303-4/+4
| | | | | | | | | | | | Task-number: QTBUG-46374 Change-Id: I7bc633ab551740bd328a24b0ccae1d534af47138 Reviewed-by: Martin Smith <martin.smith@digia.com>
| * Merge "Merge remote-tracking branch 'origin/5.5.0' into 5.5" into ↵Liang Qi2015-06-2810-197/+152
| |\ | | | | | | | | | refs/staging/5.5
| | * Merge remote-tracking branch 'origin/5.5.0' into 5.5Liang Qi2015-06-2710-197/+152
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoafiledialoghelper.h Manually fixed src/testlib/qtestcase.cpp to return the right type. Change-Id: Id1634dbe3d73fefe9431b9f5378846cb187624e4
| | | * winrt: Fixed connectToHost, which is meant to be synchronousOliver Wolff2015-06-222-28/+27
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-46339 Change-Id: I413fef39424a0815ef4604000f85ad37ac2b4dc2 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| | | * QSslSocket: move default cipher, EC and default CA APIs to QSslConfigurationGiuseppe D'Angelo2015-06-117-157/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSslConfiguration is better suited for these APIs. The ones in QSslSocket that already have a counterpart have been deprecated. [ChangeLog][QtNetwork][SSL/TLS Support] Most of the QSslSocket functions to deal with ciphersuites, certification authorities as well as elliptic curves have been deprecated in favor of the corresponding counterparts in QSslConfiguration. Task-number: QTBUG-46558 Change-Id: I1de03379efcbcab931c20e876e252769fe4279e0 Reviewed-by: Liang Qi <liang.qi@theqtcompany.com> Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
| | | * Unexport QSslPreSharedKeyAuthenticatorMarc Mutz2015-06-091-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Exporting value classes (as opposed to just their non-inline methods) creates subtle binary incompatibility problems. In this case, between C++11 and C++98 builds because of the move assignment operator. Even though it's not a problem in practice, so far, for some types of classes this issue ie real (QVector, say), so it's best to avoid exporting what we don't need to export. Change-Id: Ifca6aaedcbfa79ca35e651de7630e69c3b266fe3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | | Doc: rearrange tables with overflowNico Vertriest2015-06-261-1/+1
| |/ / | | | | | | | | | | | | | | | Task-number: QTBUG-46475 Change-Id: Id599b2eb0dee0c003475c094ad61700150e37e65 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
| * | fix usage of wince scopeOswald Buddenhagen2015-06-051-2/+2
| | | | | | | | | | | | | | | | | | | | | Fix style issues along the way. Change-Id: Ic6a6de28e198eb0b14c198b802e78845703909b9 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | | QtNetwork: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-3016-42/+99
| | | | | | | | | | | | | | | Change-Id: Ib29ec4b73a4cdc51074997f7d167c289cf5af7a4 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Use QVector::reserve() all over the place.Sérgio Martins2015-06-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduces internal memory fragmentation. The search criteria was: QVector::append(), QVector::push_back(), QVector::operator<<() and QVector::operator+=() calls inside for, do and while loops. Statements inside ifs and out of loops weren't considered. Change-Id: Ie5aaf3cdfac938994e6e5dfa5f51de501ed79a0c Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Fix inefficient container.values().first()Sérgio Martins2015-06-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Saves 1 full iteration and 1 memory allocation. Change-Id: I7e521054bd573f30dea2ec166d566ab6ac60eb4e Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Also add support for linked OpenSSL without SSL v2 & v3 supportDaniel Molkentin2015-06-282-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | So far, this was only supported for dlopen mode. This adds symmetric defines for the linking case. Change-Id: I9cbfa18e04d041dde0cbd833929782cada9eb812 Reviewed-by: Richard J. Moore <rich@kde.org>