summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKurt Pattyn <pattyn.kurt@gmail.com>2013-08-10 17:28:26 +0200
committerKurt Pattyn <pattyn.kurt@gmail.com>2013-08-10 17:28:26 +0200
commit1404a540b29bea6cf9b28bd9cc937c467aa49ef3 (patch)
treee3ef0f234470a71318d3ab5ff81e0ae152271cae
parentdebea61ef6fca34aaa37a7ec2a5c9288c1501a5c (diff)
downloadqtwebsockets-1404a540b29bea6cf9b28bd9cc937c467aa49ef3.tar.gz
Changed parsing of connection header; connection header can contain multiple items.
-rw-r--r--source/handshakerequest.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/source/handshakerequest.cpp b/source/handshakerequest.cpp
index a87312e..e90e8e5 100644
--- a/source/handshakerequest.cpp
+++ b/source/handshakerequest.cpp
@@ -5,7 +5,6 @@
#include <QUrl>
#include <QList>
#include <QStringList>
-
#include "websocketprotocol.h"
HandshakeRequest::HandshakeRequest(int port, bool isSecure) :
@@ -146,7 +145,13 @@ QTextStream &HandshakeRequest::readFromStream(QTextStream &textStream)
qStableSort(m_versions.begin(), m_versions.end(), qGreater<WebSocketProtocol::Version>()); //sort in descending order
m_key = m_headers.value("Sec-WebSocket-Key", "");
QString upgrade = m_headers.value("Upgrade", ""); //must be equal to "websocket", case-insensitive
- QString connection = m_headers.value("Connection", ""); //must be equal to "Upgrade", case-insensitive
+ QString connection = m_headers.value("Connection", ""); //must contain "Upgrade", case-insensitive
+ QStringList connectionLine = connection.split(",", QString::SkipEmptyParts);
+ QStringList connectionValues;
+ Q_FOREACH(QString connection, connectionLine)
+ {
+ connectionValues << connection.trimmed();
+ }
//optional headers
m_origin = m_headers.value("Sec-WebSocket-Origin", "");
@@ -177,7 +182,8 @@ QTextStream &HandshakeRequest::readFromStream(QTextStream &textStream)
(verb != "GET") ||
(httpProtocol != "HTTP/1.1") ||
(upgrade.toLower() != "websocket") ||
- (connection.toLower() != "upgrade"));
+ (!connectionValues.contains("upgrade", Qt::CaseInsensitive)));
+ //(connection.toLower() != "upgrade"));
}
return textStream;
}