From 89a55a1de038a3ea9b3ab70a91a746482c50d479 Mon Sep 17 00:00:00 2001 From: Gautam Jha Date: Wed, 20 Nov 2019 18:15:11 +0530 Subject: [PATCH 1/3] Fixing windows port range issue --- appshell/appshell_extensions.cpp | 21 ++++++++++++++++++--- appshell/cefclient.cpp | 31 +++++++++++++++---------------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/appshell/appshell_extensions.cpp b/appshell/appshell_extensions.cpp index 4723876d9..68b4a994c 100644 --- a/appshell/appshell_extensions.cpp +++ b/appshell/appshell_extensions.cpp @@ -38,6 +38,7 @@ extern std::vector gDroppedFiles; extern int g_remote_debugging_port; +extern std::string g_remote_debugging_port_invalid_arg; namespace appshell_extensions { @@ -57,6 +58,7 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { CefRefPtr argList = message->GetArgumentList(); int32 callbackId = -1; int32 error = NO_ERROR; + std::string errInfo; CefRefPtr response = CefProcessMessage::Create("invokeCallback"); CefRefPtr responseArgs = response->GetArgumentList(); @@ -844,7 +846,14 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { uberDict->SetList(1, allStats); responseArgs->SetList(2, uberDict); } else if (message_name == "GetRemoteDebuggingPort") { - responseArgs->SetInt(2, g_remote_debugging_port); + if (g_remote_debugging_port_invalid_arg.empty() && g_remote_debugging_port > 0) { + responseArgs->SetInt(2, g_remote_debugging_port); + } + else { + responseArgs->SetNull(2); + errInfo = g_remote_debugging_port_invalid_arg; + error = ERR_UNKNOWN; + } } else { @@ -853,8 +862,14 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { } if (callbackId != -1) { - responseArgs->SetInt(1, error); - + if (errInfo.empty()) { + responseArgs->SetInt(1, error); + } + else { + // Cef is not allowing to set CefDictionaryValue as error-info. + responseArgs->SetString(1, errInfo); + } + // Send response browser->SendProcessMessage(PID_RENDERER, response); } diff --git a/appshell/cefclient.cpp b/appshell/cefclient.cpp index f0f875658..6f7d67012 100644 --- a/appshell/cefclient.cpp +++ b/appshell/cefclient.cpp @@ -21,6 +21,7 @@ CefRefPtr g_handler; int g_remote_debugging_port = 0; +std::string g_remote_debugging_port_invalid_arg; #ifdef OS_WIN bool g_force_enable_acc = false; @@ -99,24 +100,22 @@ void AppGetSettings(CefSettings& settings, CefRefPtr command_lin // Enable dev tools CefString debugger_port = command_line->GetSwitchValue("remote-debugging-port"); if (!debugger_port.empty()) { - const long port = strtol(debugger_port.ToString().c_str(), NULL, 10); - if (errno == ERANGE || port == 0) { - LOG(ERROR) << "Could not enable remote debugging." - << " Error while parsing remote-debugging-port arg: "<< debugger_port.ToString(); - errno = 0; + g_remote_debugging_port_invalid_arg = debugger_port.ToString(); + long port = strtol(g_remote_debugging_port_invalid_arg.c_str(), NULL, 10); + if (errno == ERANGE) { + errno = port = 0; + } + static const long max_port_num = 65535; + static const long max_reserved_port_num = 1023; + if (port > max_reserved_port_num && port < max_port_num) { + g_remote_debugging_port = static_cast(port); + settings.remote_debugging_port = g_remote_debugging_port; + g_remote_debugging_port_invalid_arg.clear(); } else { - static const long max_port_num = 65534; - static const long max_reserved_port_num = 1025; - if (port >= max_reserved_port_num && port <= max_port_num) { - g_remote_debugging_port = static_cast(port); - settings.remote_debugging_port = g_remote_debugging_port; - } - else { - LOG(ERROR) << "Cannot enable remote debugging on port "<< port - << ". Port numbers should be between "<< max_reserved_port_num - << " and " << max_port_num << "."; - } + // Setting debugging port to highest number will disable remote debugging + // As setting.remote_debugging_port has higher priority compared to command line option + settings.remote_debugging_port = max_port_num; } } From 3dc7422cdfc77c4e9ffe356aea0223fb723de97d Mon Sep 17 00:00:00 2001 From: Gautam Jha Date: Wed, 20 Nov 2019 19:11:41 +0530 Subject: [PATCH 2/3] cleanup --- appshell/appshell_extensions.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appshell/appshell_extensions.cpp b/appshell/appshell_extensions.cpp index 68b4a994c..9cb1ad716 100644 --- a/appshell/appshell_extensions.cpp +++ b/appshell/appshell_extensions.cpp @@ -58,7 +58,7 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { CefRefPtr argList = message->GetArgumentList(); int32 callbackId = -1; int32 error = NO_ERROR; - std::string errInfo; + std::string errInfo; CefRefPtr response = CefProcessMessage::Create("invokeCallback"); CefRefPtr responseArgs = response->GetArgumentList(); @@ -852,7 +852,6 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { else { responseArgs->SetNull(2); errInfo = g_remote_debugging_port_invalid_arg; - error = ERR_UNKNOWN; } } From 224cbec2352a49b4ba905642f2cc667fdf67e885 Mon Sep 17 00:00:00 2001 From: Gautam Jha Date: Thu, 21 Nov 2019 15:32:13 +0530 Subject: [PATCH 3/3] Renamed the variable as per review comments --- appshell/appshell_extensions.cpp | 7 +++---- appshell/cefclient.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/appshell/appshell_extensions.cpp b/appshell/appshell_extensions.cpp index 9cb1ad716..773cc68a6 100644 --- a/appshell/appshell_extensions.cpp +++ b/appshell/appshell_extensions.cpp @@ -38,7 +38,7 @@ extern std::vector gDroppedFiles; extern int g_remote_debugging_port; -extern std::string g_remote_debugging_port_invalid_arg; +extern std::string g_get_remote_debugging_port_error; namespace appshell_extensions { @@ -846,12 +846,12 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { uberDict->SetList(1, allStats); responseArgs->SetList(2, uberDict); } else if (message_name == "GetRemoteDebuggingPort") { - if (g_remote_debugging_port_invalid_arg.empty() && g_remote_debugging_port > 0) { + if (g_get_remote_debugging_port_error.empty() && g_remote_debugging_port > 0) { responseArgs->SetInt(2, g_remote_debugging_port); } else { responseArgs->SetNull(2); - errInfo = g_remote_debugging_port_invalid_arg; + errInfo = g_get_remote_debugging_port_error; } } @@ -865,7 +865,6 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { responseArgs->SetInt(1, error); } else { - // Cef is not allowing to set CefDictionaryValue as error-info. responseArgs->SetString(1, errInfo); } diff --git a/appshell/cefclient.cpp b/appshell/cefclient.cpp index 6f7d67012..07b7fe9fe 100644 --- a/appshell/cefclient.cpp +++ b/appshell/cefclient.cpp @@ -21,7 +21,7 @@ CefRefPtr g_handler; int g_remote_debugging_port = 0; -std::string g_remote_debugging_port_invalid_arg; +std::string g_get_remote_debugging_port_error; #ifdef OS_WIN bool g_force_enable_acc = false; @@ -100,8 +100,8 @@ void AppGetSettings(CefSettings& settings, CefRefPtr command_lin // Enable dev tools CefString debugger_port = command_line->GetSwitchValue("remote-debugging-port"); if (!debugger_port.empty()) { - g_remote_debugging_port_invalid_arg = debugger_port.ToString(); - long port = strtol(g_remote_debugging_port_invalid_arg.c_str(), NULL, 10); + g_get_remote_debugging_port_error = debugger_port.ToString(); + long port = strtol(g_get_remote_debugging_port_error.c_str(), NULL, 10); if (errno == ERANGE) { errno = port = 0; } @@ -110,7 +110,7 @@ void AppGetSettings(CefSettings& settings, CefRefPtr command_lin if (port > max_reserved_port_num && port < max_port_num) { g_remote_debugging_port = static_cast(port); settings.remote_debugging_port = g_remote_debugging_port; - g_remote_debugging_port_invalid_arg.clear(); + g_get_remote_debugging_port_error.clear(); } else { // Setting debugging port to highest number will disable remote debugging