From 24894c032719157a2d738f03e0c70d3ff0cf1782 Mon Sep 17 00:00:00 2001 From: Ryan Chu Date: Sun, 30 Jun 2019 13:56:25 +0200 Subject: Make QWebSocketFrame::readFrame as a non-static public function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The static function QWebSocketFrame::readFrame used to return a parsed QWebSocketFrame read from QIODevice. This change make QWebSocketFrame reusable. It will base on its internal state and keep processing the incoming data from QIODevice. Change-Id: Ic6dea59529fa935cdb8034519e633ea67e869674 Reviewed-by: Edward Welbourne Reviewed-by: Mårten Nordheim Reviewed-by: Timur Pocheptsov --- src/websockets/qwebsocketdataprocessor_p.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/websockets/qwebsocketdataprocessor_p.h') diff --git a/src/websockets/qwebsocketdataprocessor_p.h b/src/websockets/qwebsocketdataprocessor_p.h index e80a843..1d8024e 100644 --- a/src/websockets/qwebsocketdataprocessor_p.h +++ b/src/websockets/qwebsocketdataprocessor_p.h @@ -55,6 +55,7 @@ #include #include #include +#include "qwebsocketframe_p.h" #include "qwebsocketprotocol.h" #include "qwebsocketprotocol_p.h" @@ -111,6 +112,7 @@ private: quint64 m_payloadLength; QTextCodec::ConverterState *m_pConverterState; QTextCodec *m_pTextCodec; + QWebSocketFrame frame; bool processControlFrame(const QWebSocketFrame &frame); }; -- cgit v1.2.1 From b14f5f59a3ae96949e6a33302385a751d6448182 Mon Sep 17 00:00:00 2001 From: Ryan Chu Date: Fri, 28 Jun 2019 14:37:05 +0200 Subject: Remove waitForReadyRead from QWebSocketFrame::readFrame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Asynchronously process socket frame in QWebSocketDataProcessor::process. If the processing of QWebSocketFrame is not done and waiting for more data, QWebSocketDataProcessor::process will return the control and wait for next readyRead signal to continue processing the unfinished socket frame. QWebSocketDataProcessor::process gets timeout after 5 seconds, and then an errorEncountered signal will be emitted. Fixes: QTBUG-74464 Change-Id: I03b7f874c1c266617e7eadf59c59ae43fa8540ce Reviewed-by: Edward Welbourne Reviewed-by: Mårten Nordheim --- src/websockets/qwebsocketdataprocessor_p.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/websockets/qwebsocketdataprocessor_p.h') diff --git a/src/websockets/qwebsocketdataprocessor_p.h b/src/websockets/qwebsocketdataprocessor_p.h index 1d8024e..41226d6 100644 --- a/src/websockets/qwebsocketdataprocessor_p.h +++ b/src/websockets/qwebsocketdataprocessor_p.h @@ -55,6 +55,7 @@ #include #include #include +#include #include "qwebsocketframe_p.h" #include "qwebsocketprotocol.h" #include "qwebsocketprotocol_p.h" @@ -113,8 +114,10 @@ private: QTextCodec::ConverterState *m_pConverterState; QTextCodec *m_pTextCodec; QWebSocketFrame frame; + QTimer waitTimer; bool processControlFrame(const QWebSocketFrame &frame); + void timeout(); }; QT_END_NAMESPACE -- cgit v1.2.1