summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp3
-rw-r--r--src/network/access/qhttpnetworkreply.cpp2
-rw-r--r--src/network/access/qnetworkreply.cpp2
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp1
-rw-r--r--src/network/kernel/qhostaddress.cpp86
-rw-r--r--src/network/kernel/qnetworkdatagram.cpp4
-rw-r--r--src/network/socket/qudpsocket.cpp8
-rw-r--r--src/network/ssl/qsslsocket_mac.cpp2
8 files changed, 55 insertions, 53 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index b1ae29427e..52dd86cd1e 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -600,7 +600,8 @@ void QHttpNetworkConnectionChannel::handleStatus()
case 302:
case 303:
case 305:
- case 307: {
+ case 307:
+ case 308: {
// Parse the response headers and get the "location" url
QUrl redirectUrl = connection->d_func()->parseRedirectResponse(socket, reply);
if (redirectUrl.isValid())
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index 612abb9044..778ba821e8 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -96,7 +96,7 @@ void QHttpNetworkReply::setRedirectUrl(const QUrl &url)
bool QHttpNetworkReply::isHttpRedirect(int statusCode)
{
return (statusCode == 301 || statusCode == 302 || statusCode == 303
- || statusCode == 305 || statusCode == 307);
+ || statusCode == 305 || statusCode == 307 || statusCode == 308);
}
qint64 QHttpNetworkReply::contentLength() const
diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp
index cabea86521..11d8f0e3f7 100644
--- a/src/network/access/qnetworkreply.cpp
+++ b/src/network/access/qnetworkreply.cpp
@@ -297,7 +297,7 @@ QNetworkReplyPrivate::QNetworkReplyPrivate()
This signal is emitted if the QNetworkRequest::FollowRedirectsAttribute was
set in the request and the server responded with a 3xx status (specifically
- 301, 302, 303, 305 or 307 status code) with a valid url in the location
+ 301, 302, 303, 305, 307 or 308 status code) with a valid url in the location
header, indicating a HTTP redirect. The \a url parameter contains the new
redirect url as returned by the server in the location header.
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 48255d175a..c1575bc812 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -1204,6 +1204,7 @@ void QNetworkReplyHttpImplPrivate::checkForRedirect(const int statusCode)
case 302: // Found
case 303: // See Other
case 307: // Temporary Redirect
+ case 308: // Permanent Redirect
// What do we do about the caching of the HTML note?
// The response to a 303 MUST NOT be cached, while the response to
// all of the others is cacheable if the headers indicate it to be
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index ee4c1e1943..a1adc61c4c 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -464,49 +464,6 @@ QHostAddress::QHostAddress(SpecialAddress address)
}
/*!
- \overload
- \since 5.8
-
- Sets the special address specified by \a address.
-*/
-void QHostAddress::setAddress(SpecialAddress address)
-{
- d->clear();
-
- Q_IPV6ADDR ip6;
- memset(&ip6, 0, sizeof ip6);
- quint32 ip4 = INADDR_ANY;
-
- switch (address) {
- case Null:
- return;
-
- case Broadcast:
- ip4 = INADDR_BROADCAST;
- break;
- case LocalHost:
- ip4 = INADDR_LOOPBACK;
- break;
- case AnyIPv4:
- break;
-
- case LocalHostIPv6:
- ip6[15] = 1;
- Q_FALLTHROUGH();
- case AnyIPv6:
- d->setAddress(ip6);
- return;
-
- case Any:
- d->protocol = QAbstractSocket::AnyIPProtocol;
- return;
- }
-
- // common IPv4 part
- d->setAddress(ip4);
-}
-
-/*!
Destroys the host address object.
*/
QHostAddress::~QHostAddress()
@@ -670,6 +627,49 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr)
}
/*!
+ \overload
+ \since 5.8
+
+ Sets the special address specified by \a address.
+*/
+void QHostAddress::setAddress(SpecialAddress address)
+{
+ clear();
+
+ Q_IPV6ADDR ip6;
+ memset(&ip6, 0, sizeof ip6);
+ quint32 ip4 = INADDR_ANY;
+
+ switch (address) {
+ case Null:
+ return;
+
+ case Broadcast:
+ ip4 = INADDR_BROADCAST;
+ break;
+ case LocalHost:
+ ip4 = INADDR_LOOPBACK;
+ break;
+ case AnyIPv4:
+ break;
+
+ case LocalHostIPv6:
+ ip6[15] = 1;
+ Q_FALLTHROUGH();
+ case AnyIPv6:
+ d->setAddress(ip6);
+ return;
+
+ case Any:
+ d->protocol = QAbstractSocket::AnyIPProtocol;
+ return;
+ }
+
+ // common IPv4 part
+ d->setAddress(ip4);
+}
+
+/*!
Returns the IPv4 address as a number.
For example, if the address is 127.0.0.1, the returned value is
diff --git a/src/network/kernel/qnetworkdatagram.cpp b/src/network/kernel/qnetworkdatagram.cpp
index dd412b69d1..d167190684 100644
--- a/src/network/kernel/qnetworkdatagram.cpp
+++ b/src/network/kernel/qnetworkdatagram.cpp
@@ -124,9 +124,7 @@ QT_BEGIN_NAMESPACE
\row \li Linux \li Supported \li Supported \li Supported
\row \li OS X \li Supported \li Supported \li Only for IPv6
\row \li Other Unix supporting RFC 3542 \li Only for IPv6 \li Only for IPv6 \li Only for IPv6
- \row \li Windows XP and older \li Not supported \li Not supported \li Not supported
- \row \li Windows Vista & up \li Supported \li Supported \li Supported
- \row \li Windows CE \li Not supported \li Not supported \li Not supported
+ \row \li Windows (desktop) \li Supported \li Supported \li Supported
\row \li Windows RT \li Not supported \li Not supported \li Not supported
\endtable
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp
index 37b385dfb5..79629a07f2 100644
--- a/src/network/socket/qudpsocket.cpp
+++ b/src/network/socket/qudpsocket.cpp
@@ -454,10 +454,12 @@ QNetworkDatagram QUdpSocket::receiveDatagram(qint64 maxSize)
QAbstractSocketEngine::WantAll);
d->hasPendingData = false;
d->socketEngine->setReadNotificationEnabled(true);
- if (readBytes < 0)
+ if (readBytes < 0) {
d->setErrorAndEmit(d->socketEngine->error(), d->socketEngine->errorString());
- else if (readBytes != result.d->data.size())
- result.d->data.truncate(readBytes);
+ readBytes = 0;
+ }
+
+ result.d->data.truncate(readBytes);
return result;
}
diff --git a/src/network/ssl/qsslsocket_mac.cpp b/src/network/ssl/qsslsocket_mac.cpp
index 68c8ccff89..8d2efe74be 100644
--- a/src/network/ssl/qsslsocket_mac.cpp
+++ b/src/network/ssl/qsslsocket_mac.cpp
@@ -92,7 +92,7 @@ EphemeralSecKeychain::EphemeralSecKeychain()
{
const auto uuid = QUuid::createUuid();
if (uuid.isNull()) {
- qCWarning(lcSsl) << "Failed to create an unique keychain name";
+ qCWarning(lcSsl) << "Failed to create a unique keychain name";
return;
}