diff options
author | Kurt Pattyn <pattyn.kurt@gmail.com> | 2013-08-10 17:28:26 +0200 |
---|---|---|
committer | Kurt Pattyn <pattyn.kurt@gmail.com> | 2013-08-10 17:28:26 +0200 |
commit | 1404a540b29bea6cf9b28bd9cc937c467aa49ef3 (patch) | |
tree | e3ef0f234470a71318d3ab5ff81e0ae152271cae | |
parent | debea61ef6fca34aaa37a7ec2a5c9288c1501a5c (diff) | |
download | qtwebsockets-1404a540b29bea6cf9b28bd9cc937c467aa49ef3.tar.gz |
Changed parsing of connection header; connection header can contain multiple items.
-rw-r--r-- | source/handshakerequest.cpp | 12 |
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; } |