diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/qhttpmultipart.cpp | 2 | ||||
-rw-r--r-- | src/network/access/qhttpnetworkconnection.cpp | 13 | ||||
-rw-r--r-- | src/network/access/qnetworkdiskcache.cpp | 2 | ||||
-rw-r--r-- | src/network/access/qnetworkreply.cpp | 4 | ||||
-rw-r--r-- | src/network/access/qnetworkrequest.cpp | 4 | ||||
-rw-r--r-- | src/network/access/qspdyprotocolhandler.cpp | 111 | ||||
-rw-r--r-- | src/network/access/qspdyprotocolhandler_p.h | 1 | ||||
-rw-r--r-- | src/network/kernel/qhostinfo.cpp | 2 | ||||
-rw-r--r-- | src/network/kernel/qnetworkproxy.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qlocalserver.cpp | 3 | ||||
-rw-r--r-- | src/network/socket/qlocalsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qtcpsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/ssl/qssl.cpp | 4 | ||||
-rw-r--r-- | src/network/ssl/qsslconfiguration.cpp | 2 | ||||
-rw-r--r-- | src/network/ssl/qsslcontext.cpp | 2 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 6 |
17 files changed, 111 insertions, 53 deletions
diff --git a/src/network/access/qhttpmultipart.cpp b/src/network/access/qhttpmultipart.cpp index 20860b0fc9..e8dfa636cd 100644 --- a/src/network/access/qhttpmultipart.cpp +++ b/src/network/access/qhttpmultipart.cpp @@ -169,7 +169,7 @@ void QHttpPart::setHeader(QNetworkRequest::KnownHeaders header, const QVariant & QNetworkRequest::KnownHeaders), the raw format will be parsed and the corresponding "cooked" header will be set as well. - Note: setting the same header twice overrides the previous + \note Setting the same header twice overrides the previous setting. To accomplish the behaviour of multiple HTTP headers of the same name, you should concatenate the two values, separating them with a comma (",") and set one single raw header. diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 2421de3f0c..cf786e37c6 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -864,6 +864,19 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply) return; } } +#ifndef QT_NO_SSL + // is the reply inside the SPDY pipeline of this channel already? + QMultiMap<int, HttpMessagePair>::iterator it = channels[i].spdyRequestsToSend.begin(); + QMultiMap<int, HttpMessagePair>::iterator end = channels[i].spdyRequestsToSend.end(); + for (; it != end; ++it) { + if (it.value().second == reply) { + channels[i].spdyRequestsToSend.remove(it.key()); + + QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection); + return; + } + } +#endif } // remove from the high priority queue if (!highPriorityQueue.isEmpty()) { diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index 2f2d1ab9a9..a1cbd9364e 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -518,7 +518,7 @@ void QNetworkDiskCache::setMaximumCacheSize(qint64 size) knows about that QNetworkDiskCache does not, for example the number of times a cache is accessed. - Note: cacheSize() calls expire if the current cache size is unknown. + \note cacheSize() calls expire if the current cache size is unknown. \sa maximumCacheSize(), fileMetaData() */ diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp index faa8464463..bfe870c783 100644 --- a/src/network/access/qnetworkreply.cpp +++ b/src/network/access/qnetworkreply.cpp @@ -753,7 +753,7 @@ qint64 QNetworkReply::writeData(const char *, qint64) Sets the associated operation for this object to be \a operation. This value will be returned by operation(). - Note: the operation should be set when this object is created and + \note The operation should be set when this object is created and not changed again. \sa operation(), setRequest() @@ -768,7 +768,7 @@ void QNetworkReply::setOperation(QNetworkAccessManager::Operation operation) Sets the associated request for this object to be \a request. This value will be returned by request(). - Note: the request should be set when this object is created and + \note The request should be set when this object is created and not changed again. \sa request(), setOperation() diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index aa1102f9bf..850f5bc7e7 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -512,7 +512,7 @@ QList<QByteArray> QNetworkRequest::rawHeaderList() const will also set the known header LastModifiedHeader to be the QDateTime object of the parsed date. - Note: setting the same header twice overrides the previous + \note Setting the same header twice overrides the previous setting. To accomplish the behaviour of multiple HTTP headers of the same name, you should concatenate the two values, separating them with a comma (",") and set one single raw header. @@ -528,7 +528,7 @@ void QNetworkRequest::setRawHeader(const QByteArray &headerName, const QByteArra Returns the attribute associated with the code \a code. If the attribute has not been set, it returns \a defaultValue. - Note: this function does not apply the defaults listed in + \note This function does not apply the defaults listed in QNetworkRequest::Attribute. \sa setAttribute(), QNetworkRequest::Attribute diff --git a/src/network/access/qspdyprotocolhandler.cpp b/src/network/access/qspdyprotocolhandler.cpp index 098b3e9ab0..6d22ebeb35 100644 --- a/src/network/access/qspdyprotocolhandler.cpp +++ b/src/network/access/qspdyprotocolhandler.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtNetwork module of the Qt Toolkit. @@ -275,6 +276,7 @@ QSpdyProtocolHandler::QSpdyProtocolHandler(QHttpNetworkConnectionChannel *channe // when sending the headers because of the CRIME attack zlibRet = deflateInit(&m_deflateStream, /* compression level = */ 0); Q_ASSERT(zlibRet == Z_OK); + Q_UNUSED(zlibRet); // silence -Wunused-variable } QSpdyProtocolHandler::~QSpdyProtocolHandler() @@ -307,11 +309,13 @@ bool QSpdyProtocolHandler::sendRequest() currentReply->setSpdyWasUsed(true); qint32 streamID = generateNextStreamID(); + currentReply->setProperty("SPDYStreamID", streamID); currentReply->setRequest(currentRequest); currentReply->d_func()->connection = m_connection; currentReply->d_func()->connectionChannel = m_channel; m_inFlightStreams.insert(streamID, currentPair); + connect(currentReply, SIGNAL(destroyed(QObject*)), this, SLOT(_q_replyDestroyed(QObject*))); sendSYN_STREAM(currentPair, streamID, /* associatedToStreamID = */ 0); int requestsRemoved = m_channel->spdyRequestsToSend.remove( @@ -323,6 +327,13 @@ bool QSpdyProtocolHandler::sendRequest() return true; } +void QSpdyProtocolHandler::_q_replyDestroyed(QObject* reply) +{ + qint32 streamID = reply->property("SPDYStreamID").toInt(); + if (m_inFlightStreams.remove(streamID)) + sendRST_STREAM(streamID, RST_STREAM_CANCEL); +} + void QSpdyProtocolHandler::_q_receiveReply() { Q_ASSERT(m_socket); @@ -618,6 +629,7 @@ void QSpdyProtocolHandler::sendControlFrame(FrameType type, Q_ASSERT(written == 8); written = m_socket->write(data, length); Q_ASSERT(written == length); + Q_UNUSED(written); // silence -Wunused-variable } void QSpdyProtocolHandler::sendSYN_STREAM(HttpMessagePair messagePair, @@ -694,6 +706,10 @@ void QSpdyProtocolHandler::sendPING(quint32 pingID) bool QSpdyProtocolHandler::uploadData(qint32 streamID) { // we only rely on SPDY flow control here and don't care about TCP buffers + if (!m_inFlightStreams.contains(streamID)) { + sendRST_STREAM(streamID, RST_STREAM_INVALID_STREAM); + return false; + } HttpMessagePair messagePair = m_inFlightStreams.value(streamID); QHttpNetworkRequest request = messagePair.first; @@ -702,6 +718,11 @@ bool QSpdyProtocolHandler::uploadData(qint32 streamID) QHttpNetworkReplyPrivate *replyPrivate = reply->d_func(); Q_ASSERT(replyPrivate); + if (reply->d_func()->state == QHttpNetworkReplyPrivate::SPDYHalfClosed || reply->d_func()->state == QHttpNetworkReplyPrivate::SPDYClosed) { + qWarning() << Q_FUNC_INFO << "Trying to upload to closed stream"; + return false; + } + qint32 dataLeftInWindow = replyPrivate->windowSizeUpload - replyPrivate->currentlyUploadedDataInWindow; @@ -747,6 +768,8 @@ bool QSpdyProtocolHandler::uploadData(qint32 streamID) Q_ASSERT(writeSize == 0); Q_UNUSED(writeSize); // silence -Wunused-variable replyPrivate->state = QHttpNetworkReplyPrivate::SPDYHalfClosed; + if (reply->request().uploadByteDevice()) + reply->request().uploadByteDevice()->disconnect(this); // ### this will not work if the content length is not known, but // then again many servers will fail in this case anyhow according // to the SPDY RFC @@ -874,6 +897,10 @@ void QSpdyProtocolHandler::handleSYN_REPLY(char flags, quint32 /*length*/, const void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameData) { qint32 streamID = getStreamID(frameData.constData()); + if (!m_inFlightStreams.contains(streamID)) { + sendRST_STREAM(streamID, RST_STREAM_INVALID_STREAM); + return; + } flags &= 0x3f; bool flag_fin = flags & 0x01; @@ -884,6 +911,11 @@ void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameD QHttpNetworkReply *httpReply = pair.second; Q_ASSERT(httpReply != 0); + if (httpReply->d_func()->state == QHttpNetworkReplyPrivate::SPDYClosed) { + sendRST_STREAM(streamID, RST_STREAM_STREAM_ALREADY_CLOSED); + return; + } + QByteArray uncompressedHeader; if (!uncompressHeader(headerValuePairs, &uncompressedHeader)) { qWarning() << Q_FUNC_INFO << "error reading header from SYN_REPLY message"; @@ -891,16 +923,31 @@ void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameD } qint32 headerCount = fourBytesToInt(uncompressedHeader.constData()); + if (headerCount * 8 > uncompressedHeader.size()) { + qWarning() << Q_FUNC_INFO << "error parsing header from SYN_REPLY message"; + sendRST_STREAM(streamID, RST_STREAM_PROTOCOL_ERROR); + return; + } qint32 readPointer = 4; for (qint32 a = 0; a < headerCount; ++a) { qint32 count = fourBytesToInt(uncompressedHeader.constData() + readPointer); readPointer += 4; QByteArray name = uncompressedHeader.mid(readPointer, count); readPointer += count; + if (readPointer > uncompressedHeader.size()) { + qWarning() << Q_FUNC_INFO << "error parsing header from SYN_REPLY message"; + sendRST_STREAM(streamID, RST_STREAM_PROTOCOL_ERROR); + return; + } count = fourBytesToInt(uncompressedHeader.constData() + readPointer); readPointer += 4; QByteArray value = uncompressedHeader.mid(readPointer, count); readPointer += count; + if (readPointer > uncompressedHeader.size()) { + qWarning() << Q_FUNC_INFO << "error parsing header from SYN_REPLY message"; + sendRST_STREAM(streamID, RST_STREAM_PROTOCOL_ERROR); + return; + } if (name == ":status") { httpReply->setStatusCode(value.left(3).toInt()); httpReply->d_func()->reasonPhrase = QString::fromLatin1(value.mid(4)); @@ -931,22 +978,9 @@ void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameD emit httpReply->headerChanged(); if (flag_fin) { - switch (httpReply->d_func()->state) { - case QHttpNetworkReplyPrivate::SPDYSYNSent: - httpReply->d_func()->state = QHttpNetworkReplyPrivate::SPDYHalfClosed; - break; - case QHttpNetworkReplyPrivate::SPDYHalfClosed: - replyFinished(httpReply, streamID); - break; - case QHttpNetworkReplyPrivate::SPDYClosed: { - sendRST_STREAM(streamID, RST_STREAM_PROTOCOL_ERROR); - replyFinishedWithError(httpReply, streamID, QNetworkReply::ProtocolFailure, - "server sent SYN_REPLY on an already closed stream"); - break; - } - default: - qWarning() << Q_FUNC_INFO << "got data frame in unknown state"; - } + if (httpReply->d_func()->state != QHttpNetworkReplyPrivate::SPDYHalfClosed) + sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, 0); + replyFinished(httpReply, streamID); } } @@ -1143,11 +1177,20 @@ void QSpdyProtocolHandler::handleWINDOW_UPDATE(char /*flags*/, quint32 /*length* qint32 streamID = getStreamID(frameData.constData()); qint32 deltaWindowSize = fourBytesToInt(frameData.constData() + 4); + if (!m_inFlightStreams.contains(streamID)) { + sendRST_STREAM(streamID, RST_STREAM_INVALID_STREAM); + return; + } + QHttpNetworkReply *reply = m_inFlightStreams.value(streamID).second; Q_ASSERT(reply); QHttpNetworkReplyPrivate *replyPrivate = reply->d_func(); Q_ASSERT(replyPrivate); + // Ignore WINDOW_UPDATE if we are already done. + if (replyPrivate->state == QHttpNetworkReplyPrivate::SPDYHalfClosed || replyPrivate->state == QHttpNetworkReplyPrivate::SPDYClosed) + return; + replyPrivate->currentlyUploadedDataInWindow = replyPrivate->windowSizeUpload - deltaWindowSize; uploadData(streamID); // we hopefully can continue to upload } @@ -1158,6 +1201,11 @@ void QSpdyProtocolHandler::handleDataFrame(const QByteArray &frameHeaders) Q_ASSERT(frameHeaders.count() >= 8); qint32 streamID = getStreamID(frameHeaders.constData()); + if (!m_inFlightStreams.contains(streamID)) { + sendRST_STREAM(streamID, RST_STREAM_INVALID_STREAM); + return; + } + unsigned char flags = static_cast<unsigned char>(frameHeaders.at(4)); flags &= 0x3f; bool flag_fin = flags & 0x01; @@ -1182,6 +1230,11 @@ void QSpdyProtocolHandler::handleDataFrame(const QByteArray &frameHeaders) QHttpNetworkReplyPrivate *replyPrivate = httpReply->d_func(); + if (replyPrivate->state == QHttpNetworkReplyPrivate::SPDYClosed) { + sendRST_STREAM(streamID, RST_STREAM_STREAM_ALREADY_CLOSED); + return; + } + // check whether we need to send WINDOW_UPDATE (i.e. tell the sender it can send more) replyPrivate->currentlyReceivedDataInWindow += length; qint32 dataLeftInWindow = replyPrivate->windowSizeDownload - replyPrivate->currentlyReceivedDataInWindow; @@ -1234,29 +1287,18 @@ void QSpdyProtocolHandler::handleDataFrame(const QByteArray &frameHeaders) } if (flag_fin) { - switch (httpReply->d_func()->state) { - case QHttpNetworkReplyPrivate::SPDYSYNSent: - httpReply->d_func()->state = QHttpNetworkReplyPrivate::SPDYHalfClosed; - // ### send FIN ourselves? - break; - case QHttpNetworkReplyPrivate::SPDYHalfClosed: - replyFinished(httpReply, streamID); - break; - case QHttpNetworkReplyPrivate::SPDYClosed: { - sendRST_STREAM(streamID, RST_STREAM_PROTOCOL_ERROR); - replyFinishedWithError(httpReply, streamID, QNetworkReply::ProtocolFailure, - "server sent data on an already closed stream"); - break; - } - default: - qWarning() << Q_FUNC_INFO << "got data frame in unknown state"; - } + if (httpReply->d_func()->state != QHttpNetworkReplyPrivate::SPDYHalfClosed) + sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, 0); + replyFinished(httpReply, streamID); } } void QSpdyProtocolHandler::replyFinished(QHttpNetworkReply *httpReply, qint32 streamID) { httpReply->d_func()->state = QHttpNetworkReplyPrivate::SPDYClosed; + httpReply->disconnect(this); + if (httpReply->request().uploadByteDevice()) + httpReply->request().uploadByteDevice()->disconnect(this); int streamsRemoved = m_inFlightStreams.remove(streamID); Q_ASSERT(streamsRemoved == 1); Q_UNUSED(streamsRemoved); // silence -Wunused-variable @@ -1268,6 +1310,9 @@ void QSpdyProtocolHandler::replyFinishedWithError(QHttpNetworkReply *httpReply, { Q_ASSERT(httpReply); httpReply->d_func()->state = QHttpNetworkReplyPrivate::SPDYClosed; + httpReply->disconnect(this); + if (httpReply->request().uploadByteDevice()) + httpReply->request().uploadByteDevice()->disconnect(this); int streamsRemoved = m_inFlightStreams.remove(streamID); Q_ASSERT(streamsRemoved == 1); Q_UNUSED(streamsRemoved); // silence -Wunused-variable diff --git a/src/network/access/qspdyprotocolhandler_p.h b/src/network/access/qspdyprotocolhandler_p.h index 8cbfbdda86..50c5ed52a1 100644 --- a/src/network/access/qspdyprotocolhandler_p.h +++ b/src/network/access/qspdyprotocolhandler_p.h @@ -108,6 +108,7 @@ public: private slots: void _q_uploadDataReadyRead(); + void _q_replyDestroyed(QObject*); private: diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 025e3f3e00..cafb09b181 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -433,7 +433,7 @@ void QHostInfo::setErrorString(const QString &str) Returns the DNS domain of this machine. - Note: DNS domains are not related to domain names found in + \note DNS domains are not related to domain names found in Windows networks. \sa hostName() diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index 5cc41392b5..e797eaaed4 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -841,7 +841,7 @@ QList<QByteArray> QNetworkProxy::rawHeaderList() const will also set the known header LastModifiedHeader to be the QDateTime object of the parsed date. - Note: setting the same header twice overrides the previous + \note Setting the same header twice overrides the previous setting. To accomplish the behaviour of multiple HTTP headers of the same name, you should concatenate the two values, separating them with a comma (",") and set one single raw header. diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 0345537d1c..1ceec717c6 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -1552,7 +1552,7 @@ bool QAbstractSocket::bind(quint16 port, BindMode mode) Returns \c true if the socket is valid and ready for use; otherwise returns \c false. - \b{Note:} The socket's state must be ConnectedState before reading and + \note The socket's state must be ConnectedState before reading and writing can occur. \sa state() diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp index 791227002d..d268a238e0 100644 --- a/src/network/socket/qlocalserver.cpp +++ b/src/network/socket/qlocalserver.cpp @@ -278,8 +278,7 @@ bool QLocalServer::isListening() const could also be a path such as "/tmp/foo" and on Windows this could be a pipe path such as "\\\\.\\pipe\\foo" - Note: - On Unix if the server crashes without closing listen will fail + \note On Unix if the server crashes without closing listen will fail with AddressInUseError. To create a new server the file should be removed. On Windows two local servers can listen to the same pipe at the same time, but any connections will go to one of the server. diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp index d4251672db..f7033893bc 100644 --- a/src/network/socket/qlocalsocket.cpp +++ b/src/network/socket/qlocalsocket.cpp @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE waitForReadyRead(), waitForBytesWritten(), and waitForDisconnected() which blocks until the operation is complete or the timeout expires. - Note that this feature is not supported on versions of Windows earlier than + \note This feature is not supported on versions of Windows earlier than Windows XP. \sa QLocalServer diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp index ce37401a89..e6f5887095 100644 --- a/src/network/socket/qtcpsocket.cpp +++ b/src/network/socket/qtcpsocket.cpp @@ -58,7 +58,7 @@ allows you to establish a TCP connection and transfer streams of data. See the QAbstractSocket documentation for details. - \b{Note:} TCP sockets cannot be opened in QIODevice::Unbuffered mode. + \note TCP sockets cannot be opened in QIODevice::Unbuffered mode. \sa QTcpServer, QUdpSocket, QNetworkAccessManager, {Fortune Server Example}, {Fortune Client Example}, diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp index 5b7274e3e6..b555c885b1 100644 --- a/src/network/ssl/qssl.cpp +++ b/src/network/ssl/qssl.cpp @@ -129,7 +129,7 @@ QT_BEGIN_NAMESPACE \value SecureProtocols The default option, using protocols known to be secure; currently behaves like TlsV1SslV3. - Note: most servers using SSL understand both versions (2 and 3), + \note most servers using SSL understand both versions (2 and 3), but it is recommended to use the latest version only for security reasons. However, SSL and TLS are not compatible with each other: if you get unexpected handshake failures, verify that you chose @@ -176,7 +176,7 @@ QT_BEGIN_NAMESPACE SslOptionDisableSessionPersistence is turned on to optimize memory usage. The other options are turned off. - Note: Availability of above options depends on the version of the SSL + \note Availability of above options depends on the version of the SSL backend in use. */ diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index 3b59b0e3ce..64b75f98ec 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -657,7 +657,7 @@ bool QSslConfiguration::testSslOption(QSsl::SslOption option) const used or QSsl::SslOptionDisableSessionPersistence was not turned off, this function returns an empty QByteArray. - \b{Note:} When persisting the session ticket to disk or similar, be + \note When persisting the session ticket to disk or similar, be careful not to expose the session to a potential attacker, as knowledge of the session allows for eavesdropping on data encrypted with the session parameters. diff --git a/src/network/ssl/qsslcontext.cpp b/src/network/ssl/qsslcontext.cpp index 551804ec79..1634ba0649 100644 --- a/src/network/ssl/qsslcontext.cpp +++ b/src/network/ssl/qsslcontext.cpp @@ -349,7 +349,7 @@ SSL* QSslContext::createSsl() // We cache exactly one session here bool QSslContext::cacheSession(SSL* ssl) { - // dont cache the same session again + // don't cache the same session again if (session && session == q_SSL_get_session(ssl)) return true; diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 419bf0bf30..04c0fb0487 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -283,7 +283,7 @@ \a errors contains one or more errors that prevent QSslSocket from verifying the identity of the peer. - Note: You cannot use Qt::QueuedConnection when connecting to this signal, + \note You cannot use Qt::QueuedConnection when connecting to this signal, or calling QSslSocket::ignoreSslErrors() will have no effect. \sa peerVerifyError() @@ -400,7 +400,7 @@ void QSslSocket::resume() \snippet code/src_network_ssl_qsslsocket.cpp 3 - \b{Note:} The example above shows that text can be written to + \note The example above shows that text can be written to the socket immediately after requesting the encrypted connection, before the encrypted() signal has been emitted. In such cases, the text is queued in the object and written to the socket \e after @@ -470,7 +470,7 @@ void QSslSocket::connectToHostEncrypted(const QString &hostName, quint16 port, The socket is opened in the mode specified by \a openMode, and enters the socket state specified by \a state. - \b{Note:} It is not possible to initialize two sockets with the same + \note It is not possible to initialize two sockets with the same native socket descriptor. \sa socketDescriptor() |