summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2018-05-14 12:41:23 +0200
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2018-05-16 07:31:29 +0000
commita4afeaa8b0b00373eab1b2a974aed2cbed128844 (patch)
tree508cd57c3e5eb627f8158274c42632e83a1700ff
parentba7881a0818204c7cc4a361ac20e2c34c8d6f185 (diff)
downloadqtwebsockets-a4afeaa8b0b00373eab1b2a974aed2cbed128844.tar.gz
Use QUrl::toString() when forming the 'Host' header
This allows to correctly use IPv6 literals and also deals (correctly) with a port (if it's set at all). Task-number: QTBUG-68245 Change-Id: I6d29543887c4ab58d70f0970a6f0a1b822c301df Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
-rw-r--r--src/websockets/qwebsocket_p.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
index f4ed311..45d6a6f 100644
--- a/src/websockets/qwebsocket_p.cpp
+++ b/src/websockets/qwebsocket_p.cpp
@@ -1104,16 +1104,18 @@ void QWebSocketPrivate::processStateChanged(QAbstractSocket::SocketState socketS
headers << qMakePair(QString::fromLatin1(key),
QString::fromLatin1(m_request.rawHeader(key)));
- const QString handshake =
- createHandShakeRequest(m_resourceName,
- m_request.url().host()
- % QStringLiteral(":")
- % QString::number(m_request.url().port(port)),
- origin(),
- QString(),
- QString(),
- m_key,
- headers);
+ const auto format = QUrl::RemoveScheme | QUrl::RemoveUserInfo
+ | QUrl::RemovePath | QUrl::RemoveQuery
+ | QUrl::RemoveFragment | QUrl::RemovePort;
+ const QString host = m_request.url().toString(format).mid(2);
+ const QString handshake = createHandShakeRequest(m_resourceName,
+ host % QStringLiteral(":")
+ % QString::number(m_request.url().port(port)),
+ origin(),
+ QString(),
+ QString(),
+ m_key,
+ headers);
if (handshake.isEmpty()) {
m_pSocket->abort();
Q_EMIT q->error(QAbstractSocket::ConnectionRefusedError);