From e7b74331d695bfa8b77e39cdc50fc2d84a49a22a Mon Sep 17 00:00:00 2001 From: Ivan Radulovic Date: Wed, 2 Dec 2015 09:05:51 -0500 Subject: [PATCH] Allow remote debugging using random port provided by OS Issue: https://github.com/ariya/phantomjs/issues/13432 --- .../WebKit/qt/WebCoreSupport/InspectorServerQt.cpp | 14 ++++++++------ .../WebKit/qt/WebCoreSupport/InspectorServerQt.h | 2 +- .../WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp index 4f7685c9824..c32561c997a 100644 --- a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp @@ -78,14 +78,16 @@ InspectorServerQt::~InspectorServerQt() close(); } -void InspectorServerQt::listen(quint16 port) +int InspectorServerQt::listen(quint16 port) { if (m_tcpServer) - return; + return m_tcpServer->serverPort(); m_tcpServer = new QTcpServer(); m_tcpServer->listen(QHostAddress::Any, port); connect(m_tcpServer, SIGNAL(newConnection()), SLOT(newConnection())); + + return port; } void InspectorServerQt::close() @@ -135,7 +137,7 @@ InspectorServerRequestHandlerQt::InspectorServerRequestHandlerQt(QTcpSocket* tcp , m_server(server) , m_inspectorClient(0) { - m_endOfHeaders = false; + m_endOfHeaders = false; m_contentLength = 0; connect(m_tcpConnection, SIGNAL(readyRead()), SLOT(tcpReadyRead())); @@ -314,7 +316,7 @@ void InspectorServerRequestHandlerQt::webSocketReadyRead() return; QByteArray content = m_tcpConnection->read(m_tcpConnection->bytesAvailable()); m_data.append(content); - while (m_data.size() > 0) { + while (m_data.size() > 0) { const bool isMasked = m_data[1] & 0x80; quint64 payloadLen = m_data[1] & 0x7F; int pos = 2; @@ -337,13 +339,13 @@ void InspectorServerRequestHandlerQt::webSocketReadyRead() // Handle fragmentation if (!(m_data[0] & 0x80)) { // Non-last fragmented payload - m_fragmentedPayload.append(payload); + m_fragmentedPayload.append(payload); m_data = m_data.mid(pos + payloadLen); continue; } if (!(m_data[0] & 0x0F)) { // Last fragment - m_fragmentedPayload.append(payload); + m_fragmentedPayload.append(payload); payload = m_fragmentedPayload; m_fragmentedPayload.clear(); } diff --git a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.h b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.h index 2754b58d907..6b5f8187de4 100644 --- a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.h +++ b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.h @@ -43,7 +43,7 @@ class InspectorServerQt : public QObject { static InspectorServerQt* server(); - void listen(quint16 port); + int listen(quint16 port); void registerClient(InspectorClientQt*); void unregisterClient(InspectorClientQt*); diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp index d1a7f6cabe5..59cca8ed43a 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp @@ -858,7 +858,7 @@ void QWebPageAdapter::dynamicPropertyChangeEvent(QObject* obj, QDynamicPropertyC QVariant port = obj->property("_q_webInspectorServerPort"); if (port.isValid()) { InspectorServerQt* inspectorServer = InspectorServerQt::server(); - inspectorServer->listen(port.toInt()); + obj->setProperty("_q_webInspectorServerPort", inspectorServer->listen(port.toInt())); } #endif } else if (event->propertyName() == "_q_deadDecodedDataDeletionInterval") {