summaryrefslogtreecommitdiffstats
path: root/src/network/socket/qabstractsocket.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* | | QAbstractSocket: remove unnecessary checksAlex Trotsenko2016-03-091-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need to check the 'enabled' states before calling set{Read|Write}NotificationEnabled() functions, because the socket event notifiers are fully optimized for this case. Change-Id: I0cd4fbc2298c9b9523420a60a46a65e0b305fa12 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | | QAbstractSocket::flush(): remove manual polymorphismAlex Trotsenko2016-03-011-9/+1
|/ / | | | | | | | | | | | | | | ... by making a function in the private class virtual. Change-Id: I45c25c6c59511a8e8821ca96b0cf28cbf1b2f267 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
* | Simplify QAbstractSocket::readData()Alex Trotsenko2016-02-031-22/+8
| | | | | | | | | | | | | | | | It needed refactoring after prior changes (bf6897edb0, 1ce203d05a, 48a4a67e8d). Change-Id: I06ee3f4f70db2a71acfc8e9c1da5b4ad7524179d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | QRingBuffer: add append(const char *, qint64) functionAlex Trotsenko2016-02-011-8/+2
| | | | | | | | | | | | | | This allows to remove a code duplication in several places. Change-Id: I49f56e951682dbd2968923654a12cba5199a2502 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | QAbstractSocket: do not use internal buffer for discarding the dataAlex Trotsenko2016-01-261-15/+28
| | | | | | | | | | | | | | | | | | | | Instead, allocate a temporary buffer on the stack. This prevents the internal read buffer from being allocated if the device is opened only for writing. Change-Id: Ib91c58299206e92006589807527e7b71a5555c8f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/devLiang Qi2016-01-261-1/+2
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-211-1/+2
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice_p.h src/corelib/kernel/qvariant_p.h src/corelib/tools/qsimd.cpp src/gui/kernel/qguiapplication.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
| | * Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2016-01-191-1/+2
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/common/atomic64/atomic64.cpp configure src/3rdparty/forkfd/forkfd.c src/corelib/io/forkfd_qt.cpp src/widgets/kernel/qwidgetwindow.cpp tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp tools/configure/configureapp.cpp Change-Id: Ic6168d82e51a0ef1862c3a63bee6722e8f138414
| | | * QAbstractSocket: do not enable read notifications on TCP in bind()Alex Trotsenko2015-12-241-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In bind+connect scenario, rejected connection can trigger a read notification while the socket is opened. But unlike UDP, reading from the socket engine or emitting a readyRead() signal is not allowed for the TCP socket in bound or connecting state. To make a bind+connect scenario work properly, disable the read notifications until a connection is established. Task-number: QTBUG-50124 Change-Id: I7b3d015b0f6021fb9ff9f83560478aa5545f41f5 Reviewed-by: Richard J. Moore <rich@kde.org>
* | | | Add Intel copyright to files that Intel has had non-trivial contributionThiago Macieira2016-01-211-0/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | I wrote a script to help find the files, but I reviewed the contributions manually to be sure I wasn't claiming copyright for search & replace, adding Q_DECL_NOTHROW or adding "We mean it" headers. Change-Id: I7a9e11d7b64a4cc78e24ffff142b506368fc8842 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | | QAbstractSocket: remove redundant handling of recursive callsAlex Trotsenko2016-01-151-23/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recursion is alredy prevented by the emittedReadyRead member. Disabling the read notifications also occurs when: - a new chunk of data has arrived on an unbuffered socket; - the buffer size limit has been reached on a buffered socket; - pauseSocketNotifiers() has been called Subsequent calls to read() or resumeSocketNotifiers() should re-enable the notifications independently from possible nesting. Change-Id: I4587265b8d3ed137516e08fbe92dce2f5eab508c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
* | | Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | | Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/devSimon Hausmann2016-01-131-2/+2
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.6' into devSimon Hausmann2016-01-121-2/+2
| |\| | | | | | | | | | | | | | Change-Id: I5839bded07e23af65ced9491c4f50242f964dd31
| | * | Fix documentation for ReuseAddressHint on Unix.David Faure2016-01-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code says (for Q_OS_UNIX) if ((mode & QAbstractSocket::ShareAddress) || (mode & QAbstractSocket::ReuseAddressHint)) socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1); so clearly ReuseAddressHint does the same as ShareAddress, which is: setting SO_REUSEADDR. Change-Id: Ic2ab4d139c3f58c3c63723fc609a9d4f71bac97a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Topi Reiniƶ <topi.reinio@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | Compile-fix: add missing declaration in debug.Edward Welbourne2015-10-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QAbstractSocketPrivate::readFromSocket() had a qDebug() that references its q->... so it also needs its Q_Q() declaration. Only relevant when QABSTRACTSOCKET_DEBUG is enabled (which it normally isn't). Change-Id: Ib82fd032fb2c4143a0987b9162377d0d7e968e95 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Add debug message on writing to an unbuffered TCP socketAlex Trotsenko2016-01-121-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same message is already printed on UDP and buffered TCP. Change-Id: I533baf97fe7e1359a38db3c3eb31d0463fe158e5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | QAbstractSocket::writeData(): remove dead codeAlex Trotsenko2016-01-121-4/+1
|/ / / | | | | | | | | | | | | | | | | | | The code was checking the write buffer in a branch for unbuffered sockets. Change-Id: I4dc722e7f182562332c3d167e6ebbab7f53f51e7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QAbstractSocket: remove unused 'connectTimeElapsed' memberAlex Trotsenko2016-01-051-6/+0
| | | | | | | | | | | | | | | | | | Change-Id: If73198fb034b6a52b5081379a2bc69052d307454 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | | Remove Windows-specific handling of the write notifiers on socketsAlex Trotsenko2016-01-041-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need in special OS dependent code now, because the socket notifiers got the identical behavior on all platforms. Change-Id: I53ee51cd5eeff328e0b73f7325d2c9e883c5b213 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | | QAbstractSocket: simplify a check for data availabilityAlex Trotsenko2015-11-191-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We know that the QAbstractSocketPrivate::canReadNotification() slot is called by the engine's read notifier only when new data is available for reading, or when the socket has been closed. This allows us to remove additional checks for engine validity and data availability for unbuffered sockets. Change-Id: Ic278cf2214d418d8fe471ea24a765b8d5840b0a5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-10-141-13/+8
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/corelib/io/qfile/tst_qfile.cpp tests/auto/corelib/io/qprocess/tst_qprocess.cpp tests/auto/corelib/tools/qversionnumber/qversionnumber.pro Change-Id: Ia93ce500349d96a2fbf0b4a37b73f088cc505c6e
| * | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-131-2/+4
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qabstractsocket.cpp src/plugins/platforms/winrt/qwinrtscreen.cpp src/sql/drivers/mysql/qsql_mysql.cpp Change-Id: Ifb73623d09f53340ee5e10283f1f86b580998902
| | * QAbstractSocket: fix writing to socket in HostLookup stateAlex Trotsenko2015-10-131-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After calling connectToHost(), the socket enters HostLookup state. At this stage, the socket engine was not created yet, and writing to the socket should result in either data buffering or an error. So, add a check for d->socketEngine to prevent a crash on unbuffered sockets. Task-number: QTBUG-48356 Change-Id: I15ea9ce7de97ce6d7e13e358eca5350745b556bb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Richard J. Moore <rich@kde.org>
| * | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-021-9/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/corelib/tools/qstring.h src/gui/image/qimagereader.cpp src/network/access/qnetworkaccessmanager.cpp src/tools/qdoc/doc/examples/examples.qdoc src/widgets/accessible/qaccessiblewidgetfactory_p.h src/widgets/doc/qtwidgets.qdocconf Change-Id: I8fae62283aebefe24e5ca4b4abd97386560c0fcb
| | * QUdpSocket: avoid infinite read notifier blockingAlex Trotsenko2015-09-101-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was a small amount of time between the last readDatagram() call and disabling a read notifier in case the socket had a pending datagram. If a new datagram arrived in this period, this qualified as absence of a datagram reader. Do not change the read notifier state because it is disabled on canReadNotification() entry and always enabled by the datagram reader. Thanks to Peter Seiderer, who investigated the same: "Querying hasPendingDatagrams() for enabling/disabling setReadNotificationEnabled() is racy (a new datagram could arrive after readDatagam() is called and before hasPendingDatagrams() is checked). But for unbuffered sockets the ReadNotification is already disabled before the readReady signal is emitted and should be re-enabled when calling read() or readDatagram() from the user." However, this patch does not completely solve the problem under Windows, as the socket notifier may emit spurious notifications. Task-number: QTBUG-46552 Change-Id: If7295d53ae2c788c39e86303502f38135c4d6180 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Remove unnecessary null-pointer checkThiago Macieira2015-09-281-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was dereferenced 8 lines before and the pointer cannot have changed since. Found by Coverity, CID 11363. Change-Id: I42e7ef1a481840699a8dffff1407ecab4e4f5930 Reviewed-by: Richard J. Moore <rich@kde.org>
* | | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-09-251-56/+60
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/io.pri src/corelib/io/qdatastream.cpp src/corelib/io/qdatastream.h src/network/socket/qabstractsocket.cpp src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h src/widgets/styles/qgtkstyle.cpp tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/qmimedatabase-cache.pro tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/qmimedatabase-xml.pro tests/auto/dbus/qdbusconnection/qdbusconnection.pro tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp Change-Id: I347549a024eb5bfa986699e0a11f96cc55c797a7
| * | QAbstractSocket: Consolidate error reportingKai Koehne2015-09-141-56/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce the methods setError(), setErrorAndEmit() to consistently set the internal error state. Change-Id: I4ff951d100cf5e9f9a7e27135bb52188cde99853 Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | QAbstractSocket: Always set errorString right after socketErrorKai Koehne2015-09-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise errorString() might not match error() in a statusChanged handler. Change-Id: If1250b4552412eabe88457dee031e4ef3f533838 Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-08-261-1/+6
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/snippets/code/doc_src_qmake-manual.pro qmake/doc/src/qmake-manual.qdoc src/corelib/io/qstorageinfo_unix.cpp src/corelib/tools/qbytearray.cpp src/widgets/kernel/qwidgetwindow.cpp tests/auto/corelib/io/qprocess/tst_qprocess.cpp tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp tests/auto/network/access/qnetworkreply/BLACKLIST Change-Id: I9efcd7e1cce1c394eed425c43aa6fce7d2edf31c
| | * Merge remote-tracking branch 'origin/5.4' into 5.5Oswald Buddenhagen2015-07-171-1/+6
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/manifest-meta.qdocconf src/corelib/global/qnamespace.qdoc src/corelib/io/qstorageinfo_unix.cpp src/corelib/tools/qtools_p.h src/sql/drivers/psql/qsql_psql.cpp Change-Id: I23a15ac84e03ad61d865e3df872b013eb0752949
| | | * Network: Fix up previous corruption patchMarkus Goetz2015-07-081-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a fix-up for cff39fba10ffc10ee4dcfdc66ff6528eb26462d3. That patch lead to some internal state issues that lead to the QTBUG-47048 or to QNetworkReply objects erroring with "Connection Closed" when the server closed the Keep-Alive connection. This patch changes the QNAM socket slot connections to be DirectConnection. We don't close the socket anymore in slots where it is anyway in a closed state afterwards. This prevents event/stack recursions. We also flush QSslSocket/QTcpSocket receive buffers when receiving a disconnect so that the developer always gets the full decrypted data from the buffers. [ChangeLog][QtNetwork] Fix HTTP issues with "Unknown Error" and "Connection Closed" [ChangeLog][QtNetwork][Sockets] Read OS/encrypted read buffers when connection closed by server. Change-Id: Ib4d6a2d0d988317e3a5356f36e8dbcee4590beed Task-number: QTBUG-47048 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Richard J. Moore <rich@kde.org>
* | | | QAbstractSocket: try to send all data on flush()Alex Trotsenko2015-09-091-10/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Internal write buffer may have multiple blocks of data which wait a transmission. In this case, ensuring a single write() is not enough to flush the buffer completely. Allow several attempts that aim to write as much as possible data from the buffer to the underlying network socket. Change-Id: I34b5ec65abe42853906168cdb05f793bd51162ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Do not emit readyRead() recursively on close notificationAlex Trotsenko2015-09-091-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QAbstractSocket already prevents from the recursive readyRead() emission in canReadNotification(). Follow this behavior in case the socket receives a close notification. Change-Id: Ifd916d60252832c19e0dcdeaa8dde8af75b45cf7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | QAbstractSocket: discard input data when opened only for writingAlex Trotsenko2015-09-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A buffered TCP socket might be open only for writing purpose. As a possible use case of the API, this patch avoids accumulation of unwanted data in the internal read buffer. Change-Id: I2759c1e04968d24e2ae71f3eca05e7e560cd8a41 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | QAbstractSocket::atEnd(): remove redundant checksAlex Trotsenko2015-08-261-1/+1
|/ / / | | | | | | | | | | | | | | | | | | These checks are implemented in QIODevice::atEnd(). Change-Id: I056f05a59e2422ecbe7470557cb4ba03d98e5e45 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QAbstractSocket::canReadLine(): remove code duplicationAlex Trotsenko2015-08-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Contents of the QIODevice's buffer is handled in the base implementation. Change-Id: I5a3d68e4e8dcb16d7f5ad695ac43127b8047a061 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-07-011-2/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-301-2/+2
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-46374 Change-Id: I7bc633ab551740bd328a24b0ccae1d534af47138 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | QAbstractSocket: remove unused memberAlex Trotsenko2015-05-261-1/+0
| | | | | | | | | | | | | | | | | | Change-Id: I0fa3d9e1b00f38a1b04dddd09ec8c04199ad1f34 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | | QAbstractSocket: virtualize options settingAlex Trotsenko2015-04-131-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some kinds of socket options can be applied only to newly created descriptors. However, a current QAbstractSocket implementation proceeds to actions immediately after the socket layer initialization. This disallows a socket tuning in further inheritance. Add a private virtual configureCreatedSocket() method that gives an ability to set the socket options before binding or connecting. Change-Id: I2d858a400cd46ae7fe5bf0b8900220f6121d0132 Reviewed-by: Richard J. Moore <rich@kde.org>
* | | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-04-081-8/+8
|\| | | | | | | | | | | Change-Id: I04f9f2749f68c0cb5a427b8d84e43b44bb143e4d
| * | QAbstractSocket: fix some 64-bit issues in debug codeAlex Trotsenko2015-04-071-8/+8
| | | | | | | | | | | | | | | Change-Id: I78b307b2841353f84b033a815035436ec3eef3b0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-04-061-19/+5
|\| | | | | | | | | | | Change-Id: If9fd98525b6b4ca07e5e006fc98bf372a73b8a21
| * | Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-03-311-19/+5
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/android-g++/qmake.conf qmake/generators/unix/unixmake2.cpp src/gui/image/qimage_conversions.cpp Change-Id: Ib76264b8c2d29a0228438ec02bd97d4b97545be0
| | * Introduce qt_subtract_from_timeout to reduce code duplication.Daniel Teske2015-03-091-19/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same qt_timeout_value function was copied 5 times in qtbase's code, so provide a common implementation in QIoDevice that can be used by everyone. This commit also corrects the remaining time calculation in QProcess::waitForBytesWritten and QProcess::waitForFinished by using this new function. For QProcess::waitForFinished, if the process started within almost exactly the timeout time passed to waitForFinished, msecs - stopWatch.elapsed() would be -1, which is a special value. Change-Id: I7b76ee6bae695eafdd02e3db03e2ff1e23a7f40c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | | Make QRingBuffer a 64-bit safeAlex Trotsenko2015-03-121-4/+4
|/ / | | | | | | | | | | | | | | | | | | | | According to I/O API, QIODevice and its inherited classes should be able to process a full 64-bit offsets and lengths. This requires 64-bit parameters in operations with internal buffers. Rework QRingBuffer to avoid implicit truncation of numbers and fix some 64-bit issues in code. Change-Id: Iadd6fd5fefd2d64e6c084e2feebb4dc2d6df66de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Fix bind+connect in both TCP and UDPThiago Macieira2015-03-041-31/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been known to be broken for a while. Now it works: you can bind and you'll retain the port (and the file descriptor) for the connect call. Incidentally, in fixing the binding for more than one IP for the hostname (with event loop), this commit fixes the setSocketDescriptor XFAIL. [ChangeLog][QtNetwork] Fixed a bug that caused both QTcpSocket and QUdpSocket to close the socket and lose any bound ports before connecting. Now bind()/setSocketDescriptor() followed by connect() will retain the original file descriptor. Task-number: QTBUG-26538 Change-Id: I691caed7e8fd16a9cf687b5995afbf3006bf453a Reviewed-by: Richard J. Moore <rich@kde.org>
* | Network: Fix operator<<(QDebug, ...) operationsKai Koehne2015-02-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Use the QDebugStateSaver saver(debug); debug.resetFormat().nospace(); idiom to unify the formatting and whitespace handling. Change-Id: Id346d63b3f589b60ca19e4459271d587f1a0c003 Reviewed-by: Richard J. Moore <rich@kde.org>