Hello community,
here is the log from the commit of package libqt5-qtwebsockets for
openSUSE:Factory checked in at 2015-06-06 09:52:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtwebsockets (Old)
and /work/SRC/openSUSE:Factory/.libqt5-qtwebsockets.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwebsockets"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtwebsockets/libqt5-qtwebsockets.changes
2015-03-01 15:27:21.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.libqt5-qtwebsockets.new/libqt5-qtwebsockets.changes
2015-06-06 09:52:39.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Jun 3 22:56:40 UTC 2015 - [email protected]
+
+- Update to 5.4.2
+ * Bugfix release, for more details please see:
+ http://blog.qt.io/blog/2015/06/02/qt-5-4-2-released/
+
+-------------------------------------------------------------------
Old:
----
qtwebsockets-opensource-src-5.4.1.tar.xz
New:
----
qtwebsockets-opensource-src-5.4.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtwebsockets.spec ++++++
--- /var/tmp/diff_new_pack.Ix6ZEl/_old 2015-06-06 09:52:39.000000000 +0200
+++ /var/tmp/diff_new_pack.Ix6ZEl/_new 2015-06-06 09:52:39.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libqt5-qtwebsockets
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,15 +21,15 @@
%define libname libQt5WebSockets5
Name: libqt5-qtwebsockets
-Version: 5.4.1
+Version: 5.4.2
Release: 0
Summary: Qt 5 WebSockets Library
License: SUSE-LGPL-2.1-with-digia-exception-1.1 or GPL-3.0
Group: Development/Libraries/X11
Url: http://qt.digia.com
%define base_name libqt5
-%define real_version 5.4.1
-%define so_version 5.4.1
+%define real_version 5.4.2
+%define so_version 5.4.2
%define tar_version qtwebsockets-opensource-src-%{real_version}
Source: %{tar_version}.tar.xz
Source1: baselibs.conf
++++++ qtwebsockets-opensource-src-5.4.1.tar.xz ->
qtwebsockets-opensource-src-5.4.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtwebsockets-opensource-src-5.4.1/.qmake.conf
new/qtwebsockets-opensource-src-5.4.2/.qmake.conf
--- old/qtwebsockets-opensource-src-5.4.1/.qmake.conf 2015-02-17
05:57:30.000000000 +0100
+++ new/qtwebsockets-opensource-src-5.4.2/.qmake.conf 2015-05-29
22:32:12.000000000 +0200
@@ -3,4 +3,4 @@
CONFIG += qt_example_installs
CONFIG += warning_clean
-MODULE_VERSION = 5.4.1
+MODULE_VERSION = 5.4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtwebsockets-opensource-src-5.4.1/.tag
new/qtwebsockets-opensource-src-5.4.2/.tag
--- old/qtwebsockets-opensource-src-5.4.1/.tag 2015-02-17 05:57:31.000000000
+0100
+++ new/qtwebsockets-opensource-src-5.4.2/.tag 2015-05-29 22:32:12.000000000
+0200
@@ -1 +1 @@
-5f8093e6f985a7a887ffaa1e2fecd7314b5444c6
+5b469aa3c4d6b9c68feb9cf92d03614077518894
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/doc/echoserver.qdoc
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/doc/echoserver.qdoc
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/doc/echoserver.qdoc
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/doc/echoserver.qdoc
2015-05-29 22:32:12.000000000 +0200
@@ -39,7 +39,14 @@
sends back the messages it receives.
The Echo Server Example shows how to create a simple server application
that
- sends back the messages it receives, using the WebSocket API.
+ sends back the messages it receives, using the \l {Qt
WebSockets}{WebSocket} API.
+
+ If your web browser supports \l {Qt WebSockets}{WebSocket}, you can also
use it
+ to open the \l {echoserver/echoclient.html}{echoclient.html} file, and
operate
+ like the following screenshot.
+
+ \image echoclient-html-example.png Screenshot of the HTML version of Echo
+ Client example
\sa {Echo Client Example}
*/
Files
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/doc/images/echoclient-html-example.png
and
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/doc/images/echoclient-html-example.png
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/echoclient.cpp
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/echoclient.cpp
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/echoclient.cpp
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/echoclient.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -36,10 +36,13 @@
QT_USE_NAMESPACE
//! [constructor]
-EchoClient::EchoClient(const QUrl &url, QObject *parent) :
+EchoClient::EchoClient(const QUrl &url, bool debug, QObject *parent) :
QObject(parent),
- m_url(url)
+ m_url(url),
+ m_debug(debug)
{
+ if (m_debug)
+ qDebug() << "WebSocket server:" << url;
connect(&m_webSocket, &QWebSocket::connected, this,
&EchoClient::onConnected);
connect(&m_webSocket, &QWebSocket::disconnected, this,
&EchoClient::closed);
m_webSocket.open(QUrl(url));
@@ -49,7 +52,8 @@
//! [onConnected]
void EchoClient::onConnected()
{
- qDebug() << "WebSocket connected";
+ if (m_debug)
+ qDebug() << "WebSocket connected";
connect(&m_webSocket, &QWebSocket::textMessageReceived,
this, &EchoClient::onTextMessageReceived);
m_webSocket.sendTextMessage(QStringLiteral("Hello, world!"));
@@ -59,7 +63,8 @@
//! [onTextMessageReceived]
void EchoClient::onTextMessageReceived(QString message)
{
- qDebug() << "Message received:" << message;
+ if (m_debug)
+ qDebug() << "Message received:" << message;
m_webSocket.close();
}
//! [onTextMessageReceived]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/echoclient.h
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/echoclient.h
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/echoclient.h
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/echoclient.h
2015-05-29 22:32:12.000000000 +0200
@@ -40,7 +40,7 @@
{
Q_OBJECT
public:
- explicit EchoClient(const QUrl &url, QObject *parent = Q_NULLPTR);
+ explicit EchoClient(const QUrl &url, bool debug = false, QObject *parent =
Q_NULLPTR);
Q_SIGNALS:
void closed();
@@ -52,6 +52,7 @@
private:
QWebSocket m_webSocket;
QUrl m_url;
+ bool m_debug;
};
#endif // ECHOCLIENT_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/main.cpp
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/main.cpp
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoclient/main.cpp
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoclient/main.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -31,12 +31,25 @@
**
****************************************************************************/
#include <QtCore/QCoreApplication>
+#include <QtCore/QCommandLineParser>
+#include <QtCore/QCommandLineOption>
#include "echoclient.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
- EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("QtWebSockets example: echoclient");
+ parser.addHelpOption();
+
+ QCommandLineOption dbgOption(QStringList() << "d" << "debug",
+ QCoreApplication::translate("main", "Debug output [default:
off]."));
+ parser.addOption(dbgOption);
+ parser.process(a);
+ bool debug = parser.isSet(dbgOption);
+
+ EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")), debug);
QObject::connect(&client, &EchoClient::closed, &a,
&QCoreApplication::quit);
return a.exec();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/echoserver.cpp
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/echoserver.cpp
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/echoserver.cpp
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/echoserver.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -38,14 +38,16 @@
QT_USE_NAMESPACE
//! [constructor]
-EchoServer::EchoServer(quint16 port, QObject *parent) :
+EchoServer::EchoServer(quint16 port, bool debug, QObject *parent) :
QObject(parent),
m_pWebSocketServer(new QWebSocketServer(QStringLiteral("Echo Server"),
QWebSocketServer::NonSecureMode,
this)),
- m_clients()
+ m_clients(),
+ m_debug(debug)
{
if (m_pWebSocketServer->listen(QHostAddress::Any, port)) {
- qDebug() << "Echoserver listening on port" << port;
+ if (m_debug)
+ qDebug() << "Echoserver listening on port" << port;
connect(m_pWebSocketServer, &QWebSocketServer::newConnection,
this, &EchoServer::onNewConnection);
connect(m_pWebSocketServer, &QWebSocketServer::closed, this,
&EchoServer::closed);
@@ -76,10 +78,11 @@
void EchoServer::processTextMessage(QString message)
{
QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
+ if (m_debug)
+ qDebug() << "Message received:" << message;
if (pClient) {
pClient->sendTextMessage(message);
}
- m_pWebSocketServer->close();
}
//! [processTextMessage]
@@ -87,6 +90,8 @@
void EchoServer::processBinaryMessage(QByteArray message)
{
QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
+ if (m_debug)
+ qDebug() << "Binary Message received:" << message;
if (pClient) {
pClient->sendBinaryMessage(message);
}
@@ -97,6 +102,8 @@
void EchoServer::socketDisconnected()
{
QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
+ if (m_debug)
+ qDebug() << "socketDisconnected:" << pClient;
if (pClient) {
m_clients.removeAll(pClient);
pClient->deleteLater();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/echoserver.h
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/echoserver.h
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/echoserver.h
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/echoserver.h
2015-05-29 22:32:12.000000000 +0200
@@ -44,7 +44,7 @@
{
Q_OBJECT
public:
- explicit EchoServer(quint16 port, QObject *parent = Q_NULLPTR);
+ explicit EchoServer(quint16 port, bool debug = false, QObject *parent =
Q_NULLPTR);
~EchoServer();
Q_SIGNALS:
@@ -59,6 +59,7 @@
private:
QWebSocketServer *m_pWebSocketServer;
QList<QWebSocket *> m_clients;
+ bool m_debug;
};
#endif //ECHOSERVER_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/main.cpp
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/main.cpp
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/echoserver/main.cpp
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/echoserver/main.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -31,12 +31,30 @@
**
****************************************************************************/
#include <QtCore/QCoreApplication>
+#include <QtCore/QCommandLineParser>
+#include <QtCore/QCommandLineOption>
#include "echoserver.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
- EchoServer *server = new EchoServer(1234);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("QtWebSockets example: echoserver");
+ parser.addHelpOption();
+
+ QCommandLineOption dbgOption(QStringList() << "d" << "debug",
+ QCoreApplication::translate("main", "Debug output [default:
off]."));
+ parser.addOption(dbgOption);
+ QCommandLineOption portOption(QStringList() << "p" << "port",
+ QCoreApplication::translate("main", "Port for echoserver [default:
1234]."),
+ QCoreApplication::translate("main", "port"),
QLatin1Literal("1234"));
+ parser.addOption(portOption);
+ parser.process(a);
+ bool debug = parser.isSet(dbgOption);
+ int port = parser.value(portOption).toInt();
+
+ EchoServer *server = new EchoServer(port, debug);
QObject::connect(server, &EchoServer::closed, &a, &QCoreApplication::quit);
return a.exec();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/securesocketclient.qrc
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/securesocketclient.qrc
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/securesocketclient.qrc
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/securesocketclient.qrc
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>localhost.cert</file>
+ <file>localhost.key</file>
+</qresource>
+</RCC>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/sslechoserver.cpp
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/sslechoserver.cpp
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/sslechoserver.cpp
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/sslechoserver.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -50,8 +50,8 @@
QWebSocketServer::SecureMode,
this);
QSslConfiguration sslConfiguration;
- QFile certFile(QStringLiteral("./localhost.cert"));
- QFile keyFile(QStringLiteral("./localhost.key"));
+ QFile certFile(QStringLiteral(":/localhost.cert"));
+ QFile keyFile(QStringLiteral(":/localhost.key"));
certFile.open(QIODevice::ReadOnly);
keyFile.open(QIODevice::ReadOnly);
QSslCertificate certificate(&certFile, QSsl::Pem);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/sslechoserver.pro
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/sslechoserver.pro
---
old/qtwebsockets-opensource-src-5.4.1/examples/websockets/sslechoserver/sslechoserver.pro
2015-02-17 05:57:30.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/examples/websockets/sslechoserver/sslechoserver.pro
2015-05-29 22:32:12.000000000 +0200
@@ -15,3 +15,5 @@
sslechoserver.h
OTHER_FILES += sslechoclient.html
+
+RESOURCES += securesocketclient.qrc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qdefaultmaskgenerator_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qdefaultmaskgenerator_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qdefaultmaskgenerator_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qdefaultmaskgenerator_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qdefaultmaskgenerator_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qsslserver_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qsslserver_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qsslserver_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qsslserver_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qsslserver_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocket_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocket_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocket_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocket_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocket_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocketcorsauthenticator_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketdataprocessor_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketdataprocessor_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketdataprocessor_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketdataprocessor_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocketdataprocessor_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketframe_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketframe_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketframe_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketframe_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocketframe_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakerequest_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakerequest_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakerequest_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakerequest_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsockethandshakerequest_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakeresponse_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakeresponse_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakeresponse_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsockethandshakeresponse_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsockethandshakeresponse_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketprotocol_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketprotocol_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketprotocol_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketprotocol_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocketprotocol_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketserver_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketserver_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketserver_p.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.1/QtWebSockets/private/qwebsocketserver_p.h
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/websockets/qwebsocketserver_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qdefaultmaskgenerator_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qdefaultmaskgenerator_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qdefaultmaskgenerator_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qdefaultmaskgenerator_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qdefaultmaskgenerator_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qsslserver_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qsslserver_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qsslserver_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qsslserver_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qsslserver_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocket_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocket_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocket_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocket_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocket_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketcorsauthenticator_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocketcorsauthenticator_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketdataprocessor_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketdataprocessor_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketdataprocessor_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketdataprocessor_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocketdataprocessor_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketframe_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketframe_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketframe_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketframe_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocketframe_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakerequest_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakerequest_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakerequest_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakerequest_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsockethandshakerequest_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakeresponse_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakeresponse_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakeresponse_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsockethandshakeresponse_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsockethandshakeresponse_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketprotocol_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketprotocol_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketprotocol_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketprotocol_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocketprotocol_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketserver_p.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketserver_p.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketserver_p.h
1970-01-01 01:00:00.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/5.4.2/QtWebSockets/private/qwebsocketserver_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/websockets/qwebsocketserver_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/qtwebsocketsversion.h
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/qtwebsocketsversion.h
---
old/qtwebsockets-opensource-src-5.4.1/include/QtWebSockets/qtwebsocketsversion.h
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/include/QtWebSockets/qtwebsocketsversion.h
2015-05-29 22:32:12.000000000 +0200
@@ -2,8 +2,8 @@
#ifndef QT_QTWEBSOCKETS_VERSION_H
#define QT_QTWEBSOCKETS_VERSION_H
-#define QTWEBSOCKETS_VERSION_STR "5.4.1"
+#define QTWEBSOCKETS_VERSION_STR "5.4.2"
-#define QTWEBSOCKETS_VERSION 0x050401
+#define QTWEBSOCKETS_VERSION 0x050402
#endif // QT_QTWEBSOCKETS_VERSION_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/doc/qtwebsockets.qdocconf
new/qtwebsockets-opensource-src-5.4.2/src/websockets/doc/qtwebsockets.qdocconf
---
old/qtwebsockets-opensource-src-5.4.1/src/websockets/doc/qtwebsockets.qdocconf
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/src/websockets/doc/qtwebsockets.qdocconf
2015-05-29 22:32:12.000000000 +0200
@@ -37,7 +37,7 @@
tagfile =
../../../doc/qtwebsockets/qtwebsockets.tags
-depends += qtcore qtnetwork qtdoc
+depends += qtcore qtnetwork qtdoc
qmake
headerdirs += .. \
../../imports
@@ -50,6 +50,10 @@
exampledirs +=
../../../examples/websockets \
snippets
+examples.fileextensions += "*.html"
+
+imagedirs +=
../../../examples/websockets/doc/images
+
manifestmeta.thumbnail.names += "QtWebSockets/*"
navigation.landingpage = "Qt WebSockets"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocket_p.cpp
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocket_p.cpp
--- old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocket_p.cpp
2015-02-17 05:57:31.000000000 +0100
+++ new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocket_p.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -440,8 +440,13 @@
{
QByteArray payloadTruncated = payload.left(125);
m_pingTimer.restart();
+ quint32 maskingKey = 0;
+ if (m_mustMask)
+ maskingKey = generateMaskingKey();
QByteArray pingFrame = getFrameHeader(QWebSocketProtocol::OpCodePing,
payloadTruncated.size(),
- 0 /*do not mask*/, true);
+ maskingKey, true);
+ if (m_mustMask)
+ QWebSocketProtocol::mask(&payloadTruncated, maskingKey);
pingFrame.append(payloadTruncated);
qint64 ret = writeFrame(pingFrame);
Q_UNUSED(ret);
@@ -537,6 +542,10 @@
QObject::connect(pTcpSocket, &QAbstractSocket::aboutToClose, q,
&QWebSocket::aboutToClose);
QObject::connect(pTcpSocket, &QAbstractSocket::bytesWritten, q,
&QWebSocket::bytesWritten);
+
+ QObjectPrivate::connect(pTcpSocket, &QObject::destroyed,
+ this, &QWebSocketPrivate::socketDestroyed);
+
//catch signals
QObjectPrivate::connect(pTcpSocket, &QAbstractSocket::stateChanged,
this,
&QWebSocketPrivate::processStateChanged);
@@ -1043,6 +1052,13 @@
}
}
+void QWebSocketPrivate::socketDestroyed(QObject *socket)
+{
+ Q_ASSERT(m_pSocket);
+ if (m_pSocket.data() == socket)
+ m_pSocket.take();
+}
+
/*!
\internal
*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocket_p.h
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocket_p.h
--- old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocket_p.h
2015-02-17 05:57:31.000000000 +0100
+++ new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocket_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -162,6 +162,8 @@
void setSocketState(QAbstractSocket::SocketState state);
void setErrorString(const QString &errorString);
+ void socketDestroyed(QObject *socket);
+
void processData();
void processPing(const QByteArray &data);
void processPong(const QByteArray &data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocketframe.cpp
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocketframe.cpp
--- old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocketframe.cpp
2015-02-17 05:57:31.000000000 +0100
+++ new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocketframe.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -307,7 +307,7 @@
// The arm compiler of Visual Studio 2013 Update 3 crashes when
// trying to optimize QWebSocketFrame::readFrame. Hence turn
// those off for this snippet
-#if defined(Q_OS_WINPHONE) && defined(__ARM__)
+#if (defined(Q_OS_WINPHONE) || defined(Q_OS_WINRT)) && defined(__ARM__)
# pragma optimize("", off)
#endif
@@ -340,7 +340,7 @@
//maybe, a QStateMachine should be used
if (!pIoDevice->waitForReadyRead(5000)) {
frame.setError(QWebSocketProtocol::CloseCodeGoingAway,
- QObject::tr("Timeout when reading data from
socket."));
+ tr("Timeout when reading data from socket."));
processingState = PS_DISPATCH_RESULT;
} else {
processingState = returnState;
@@ -394,7 +394,7 @@
bytesRead = pIoDevice->read(reinterpret_cast<char *>(length),
2);
if (Q_UNLIKELY(bytesRead == -1)) {
frame.setError(QWebSocketProtocol::CloseCodeGoingAway,
- QObject::tr("Error occurred while reading
from the network: %1")
+ tr("Error occurred while reading from the
network: %1")
.arg(pIoDevice->errorString()));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -405,7 +405,7 @@
//the length, for example, the length of a
124-byte-long string
//can't be encoded as the sequence 126, 0, 124"
frame.setError(QWebSocketProtocol::CloseCodeProtocolError,
- QObject::tr("Lengths smaller than 126 "
\
+ tr("Lengths smaller than 126 " \
"must be expressed as one
byte."));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -423,7 +423,7 @@
bytesRead = pIoDevice->read(reinterpret_cast<char *>(length),
8);
if (Q_UNLIKELY(bytesRead < 8)) {
frame.setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection,
- QObject::tr("Something went wrong during "\
+ tr("Something went wrong during "\
"reading from the network."));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -432,7 +432,7 @@
payloadLength = qFromBigEndian<quint64>(length);
if (Q_UNLIKELY(payloadLength & (quint64(1) << 63))) {
frame.setError(QWebSocketProtocol::CloseCodeProtocolError,
- QObject::tr("Highest bit of payload
length is not 0."));
+ tr("Highest bit of payload length is
not 0."));
processingState = PS_DISPATCH_RESULT;
} else if (Q_UNLIKELY(payloadLength <= 0xFFFFu)) {
//see http://tools.ietf.org/html/rfc6455#page-28
paragraph 5.2
@@ -440,7 +440,7 @@
//the length, for example, the length of a
124-byte-long string
//can't be encoded as the sequence 126, 0, 124"
frame.setError(QWebSocketProtocol::CloseCodeProtocolError,
- QObject::tr("Lengths smaller than 65536
(2^16) " \
+ tr("Lengths smaller than 65536 (2^16) "
\
"must be expressed as 2
bytes."));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -459,7 +459,7 @@
sizeof(frame.m_mask));
if (bytesRead == -1) {
frame.setError(QWebSocketProtocol::CloseCodeGoingAway,
- QObject::tr("Error while reading from the
network: %1.")
+ tr("Error while reading from the network:
%1.")
.arg(pIoDevice->errorString()));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -476,7 +476,7 @@
processingState = PS_DISPATCH_RESULT;
} else if (Q_UNLIKELY(payloadLength > MAX_FRAME_SIZE_IN_BYTES)) {
frame.setError(QWebSocketProtocol::CloseCodeTooMuchData,
- QObject::tr("Maximum framesize exceeded."));
+ tr("Maximum framesize exceeded."));
processingState = PS_DISPATCH_RESULT;
} else {
quint64 bytesAvailable = quint64(pIoDevice->bytesAvailable());
@@ -487,7 +487,7 @@
if (Q_UNLIKELY(frame.m_payload.length() !=
int(payloadLength))) {
//some error occurred; refer to the Qt documentation
of QIODevice::read()
frame.setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection,
- QObject::tr("Some serious error
occurred " \
+ tr("Some serious error occurred " \
"while reading from the
network."));
processingState = PS_DISPATCH_RESULT;
} else {
@@ -519,7 +519,7 @@
return frame;
}
-#if defined(Q_OS_WINPHONE) && defined(__ARM__)
+#if (defined(Q_OS_WINPHONE) || defined(Q_OS_WINRT)) && defined(__ARM__)
# pragma optimize("", on)
#endif
@@ -540,16 +540,16 @@
bool QWebSocketFrame::checkValidity()
{
if (Q_UNLIKELY(m_rsv1 || m_rsv2 || m_rsv3)) {
- setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Rsv
field is non-zero"));
+ setError(QWebSocketProtocol::CloseCodeProtocolError, tr("Rsv field is
non-zero"));
} else if (Q_UNLIKELY(QWebSocketProtocol::isOpCodeReserved(m_opCode))) {
- setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Used
reserved opcode"));
+ setError(QWebSocketProtocol::CloseCodeProtocolError, tr("Used reserved
opcode"));
} else if (isControlFrame()) {
if (Q_UNLIKELY(m_length > 125)) {
setError(QWebSocketProtocol::CloseCodeProtocolError,
- QObject::tr("Controle frame is larger than 125 bytes"));
+ tr("Controle frame is larger than 125 bytes"));
} else if (Q_UNLIKELY(!m_isFinalFrame)) {
setError(QWebSocketProtocol::CloseCodeProtocolError,
- QObject::tr("Controle frames cannot be fragmented"));
+ tr("Controle frames cannot be fragmented"));
} else {
m_isValid = true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocketframe_p.h
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocketframe_p.h
--- old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsocketframe_p.h
2015-02-17 05:57:31.000000000 +0100
+++ new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsocketframe_p.h
2015-05-29 22:32:12.000000000 +0200
@@ -36,6 +36,7 @@
#include <QtCore/QString>
#include <QtCore/QByteArray>
+#include <QtCore/QCoreApplication>
#include <limits.h>
#include "qwebsockets_global.h"
@@ -51,6 +52,8 @@
class Q_AUTOTEST_EXPORT QWebSocketFrame
{
+ Q_DECLARE_TR_FUNCTIONS(QWebSocketFrame)
+
public:
QWebSocketFrame();
QWebSocketFrame(const QWebSocketFrame &other);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsockethandshakerequest.cpp
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsockethandshakerequest.cpp
---
old/qtwebsockets-opensource-src-5.4.1/src/websockets/qwebsockethandshakerequest.cpp
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/src/websockets/qwebsockethandshakerequest.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -222,10 +222,22 @@
headerLine = textStream.readLine();
}
- const QString host = m_headers.value(QStringLiteral("host"), QString());
m_requestUrl = QUrl::fromEncoded(resourceName.toLatin1());
- if (m_requestUrl.isRelative())
+ QString host = m_headers.value(QStringLiteral("host"), QString());
+ if (m_requestUrl.isRelative()) {
+ // see http://tools.ietf.org/html/rfc6455#page-17
+ // No. 4 item in "The requirements for this handshake"
+ int idx = host.indexOf(":");
+ bool ok = false;
+ int port;
+ if (idx != -1) {
+ port = host.rightRef(host.length() - idx - 1).toInt(&ok);
+ host.truncate(idx);
+ }
m_requestUrl.setHost(host);
+ if (ok)
+ m_requestUrl.setPort(port);
+ }
if (m_requestUrl.scheme().isEmpty()) {
const QString scheme = isSecure() ? QStringLiteral("wss") :
QStringLiteral("ws");
m_requestUrl.setScheme(scheme);
@@ -260,7 +272,7 @@
connectionValues << (*c).trimmed();
//optional headers
- m_origin = m_headers.value(QStringLiteral("sec-websocket-origin"),
QString());
+ m_origin = m_headers.value(QStringLiteral("origin"), QString());
const QStringList protocolLines =
m_headers.values(QStringLiteral("sec-websocket-protocol"));
for (QStringList::const_iterator pl = protocolLines.begin(); pl !=
protocolLines.end(); ++pl) {
QStringList protocols = (*pl).split(QStringLiteral(","),
QString::SkipEmptyParts);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/tests/auto/handshakerequest/tst_handshakerequest.cpp
new/qtwebsockets-opensource-src-5.4.2/tests/auto/handshakerequest/tst_handshakerequest.cpp
---
old/qtwebsockets-opensource-src-5.4.1/tests/auto/handshakerequest/tst_handshakerequest.cpp
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/tests/auto/handshakerequest/tst_handshakerequest.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -65,6 +65,8 @@
void tst_multipleValuesInConnectionHeader();
void tst_multipleVersions();
+
+ void tst_qtbug_39355();
};
tst_HandshakeRequest::tst_HandshakeRequest()
@@ -290,6 +292,26 @@
QCOMPARE(request.versions().at(0), QWebSocketProtocol::Version13);
}
+void tst_HandshakeRequest::tst_qtbug_39355()
+{
+ QString header = QStringLiteral("GET /ABC/DEF/ HTTP/1.1\r\nHost:
localhost:1234\r\n") +
+ QStringLiteral("Sec-WebSocket-Version: 13\r\n") +
+ QStringLiteral("Sec-WebSocket-Key:
2Wg20829/4ziWlmsUAD8Dg==\r\n") +
+ QStringLiteral("Upgrade: websocket\r\n") +
+ QStringLiteral("Connection: Upgrade\r\n\r\n");
+ QByteArray data;
+ QTextStream textStream(&data);
+ QWebSocketHandshakeRequest request(8080, false);
+
+ textStream << header;
+ textStream.seek(0);
+ request.readHandshake(textStream);
+
+ QVERIFY(request.isValid());
+ QCOMPARE(request.port(), 1234);
+ QCOMPARE(request.host(), QStringLiteral("localhost"));
+}
+
QTEST_MAIN(tst_HandshakeRequest)
#include "tst_handshakerequest.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/tests/auto/qwebsocket/tst_qwebsocket.cpp
new/qtwebsockets-opensource-src-5.4.2/tests/auto/qwebsocket/tst_qwebsocket.cpp
---
old/qtwebsockets-opensource-src-5.4.1/tests/auto/qwebsocket/tst_qwebsocket.cpp
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/tests/auto/qwebsocket/tst_qwebsocket.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -50,9 +50,6 @@
QHostAddress hostAddress() const { return
m_pWebSocketServer->serverAddress(); }
quint16 port() const { return m_pWebSocketServer->serverPort(); }
-Q_SIGNALS:
- void closed();
-
private Q_SLOTS:
void onNewConnection();
void processTextMessage(QString message);
@@ -71,9 +68,8 @@
m_clients()
{
if (m_pWebSocketServer->listen()) {
- connect(m_pWebSocketServer, &QWebSocketServer::newConnection,
- this, &EchoServer::onNewConnection);
- connect(m_pWebSocketServer, &QWebSocketServer::closed, this,
&EchoServer::closed);
+ connect(m_pWebSocketServer, SIGNAL(newConnection()),
+ this, SLOT(onNewConnection()));
}
}
@@ -87,9 +83,9 @@
{
QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection();
- connect(pSocket, &QWebSocket::textMessageReceived, this,
&EchoServer::processTextMessage);
- connect(pSocket, &QWebSocket::binaryMessageReceived, this,
&EchoServer::processBinaryMessage);
- connect(pSocket, &QWebSocket::disconnected, this,
&EchoServer::socketDisconnected);
+ connect(pSocket, SIGNAL(textMessageReceived(QString)), this,
SLOT(processTextMessage(QString)));
+ connect(pSocket, SIGNAL(binaryMessageReceived(QByteArray)), this,
SLOT(processBinaryMessage(QByteArray)));
+ connect(pSocket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
m_clients << pSocket;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtwebsockets-opensource-src-5.4.1/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp
new/qtwebsockets-opensource-src-5.4.2/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp
---
old/qtwebsockets-opensource-src-5.4.1/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp
2015-02-17 05:57:31.000000000 +0100
+++
new/qtwebsockets-opensource-src-5.4.2/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp
2015-05-29 22:32:12.000000000 +0200
@@ -64,6 +64,7 @@
void tst_listening();
void tst_connectivity();
void tst_maxPendingConnections();
+ void tst_serverDestroyedWhileSocketConnected();
};
tst_QWebSocketServer::tst_QWebSocketServer()
@@ -350,6 +351,39 @@
QCOMPARE(serverAcceptErrorSpy.count(), 0);
}
+void tst_QWebSocketServer::tst_serverDestroyedWhileSocketConnected()
+{
+ QWebSocketServer * server = new QWebSocketServer(QString(),
QWebSocketServer::NonSecureMode);
+ QSignalSpy serverConnectionSpy(server, SIGNAL(newConnection()));
+ QSignalSpy corsAuthenticationSpy(server,
+
SIGNAL(originAuthenticationRequired(QWebSocketCorsAuthenticator*)));
+ QSignalSpy serverClosedSpy(server, SIGNAL(closed()));
+
+ QWebSocket socket;
+ QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected()));
+ QSignalSpy socketDisconnectedSpy(&socket, SIGNAL(disconnected()));
+
+ QVERIFY(server->listen());
+ QCOMPARE(server->serverAddress(), QHostAddress(QHostAddress::Any));
+ QCOMPARE(server->serverUrl(), QUrl(QStringLiteral("ws://") +
QHostAddress(QHostAddress::LocalHost).toString() +
+
QStringLiteral(":").append(QString::number(server->serverPort()))));
+
+ socket.open(server->serverUrl().toString());
+
+ if (socketConnectedSpy.count() == 0)
+ QVERIFY(socketConnectedSpy.wait());
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QCOMPARE(serverConnectionSpy.count(), 1);
+ QCOMPARE(corsAuthenticationSpy.count(), 1);
+
+ QCOMPARE(serverClosedSpy.count(), 0);
+
+ delete server;
+
+ if (socketDisconnectedSpy.count() == 0)
+ QVERIFY(socketDisconnectedSpy.wait());
+ QCOMPARE(socketDisconnectedSpy.count(), 1);
+}
QTEST_MAIN(tst_QWebSocketServer)