From 16bfc98a03186cef5aafa79709b086faa0d4f9f2 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 19 Dec 2018 12:01:44 +1000 Subject: wasm: set and update socket state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: QTBUG-72664 Change-Id: I8bd90f8676835d8f7bec135ad3e6c6b3e9cd9d9a Reviewed-by: Mårten Nordheim Reviewed-by: Morten Johan Sørvig --- src/websockets/qwebsocket_p.h | 2 +- src/websockets/qwebsocket_wasm_p.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/websockets/qwebsocket_p.h b/src/websockets/qwebsocket_p.h index fd631d4..4b39dfc 100644 --- a/src/websockets/qwebsocket_p.h +++ b/src/websockets/qwebsocket_p.h @@ -158,6 +158,7 @@ public: void close(QWebSocketProtocol::CloseCode closeCode, QString reason); void open(const QNetworkRequest &request, bool mask); void ping(const QByteArray &payload); + void setSocketState(QAbstractSocket::SocketState state); private: QWebSocketPrivate(QTcpSocket *pTcpSocket, QWebSocketProtocol::Version version); @@ -168,7 +169,6 @@ private: void setProtocol(const QString &protocol); void setExtension(const QString &extension); void enableMasking(bool enable); - void setSocketState(QAbstractSocket::SocketState state); void setErrorString(const QString &errorString); void socketDestroyed(QObject *socket); diff --git a/src/websockets/qwebsocket_wasm_p.cpp b/src/websockets/qwebsocket_wasm_p.cpp index 2ac61ba..922d6a8 100644 --- a/src/websockets/qwebsocket_wasm_p.cpp +++ b/src/websockets/qwebsocket_wasm_p.cpp @@ -63,6 +63,7 @@ static void q_onCloseCallback(val event) QWebSocketPrivate *wsp = reinterpret_cast(target["data-context"].as()); Q_ASSERT (wsp); + wsp->setSocketState(QAbstractSocket::UnconnectedState); emit wsp->q_func()->disconnected(); } @@ -73,6 +74,7 @@ static void q_onOpenCallback(val event) QWebSocketPrivate *wsp = reinterpret_cast(target["data-context"].as()); Q_ASSERT (wsp); + wsp->setSocketState(QAbstractSocket::ConnectedState); emit wsp->q_func()->connected(); } @@ -149,6 +151,7 @@ void QWebSocketPrivate::close(QWebSocketProtocol::CloseCode closeCode, QString r m_closeCode = closeCode; m_closeReason = reason; Q_EMIT q->aboutToClose(); + setSocketState(QAbstractSocket::ClosingState); socketContext.call("close", static_cast(closeCode), reason.toLatin1().toStdString()); @@ -165,6 +168,7 @@ void QWebSocketPrivate::open(const QNetworkRequest &request, bool mask) return; } + setSocketState(QAbstractSocket::ConnectingState); const std::string urlbytes = url.toString().toStdString(); // HTML WebSockets do not support arbitrary request headers, but -- cgit v1.2.1