diff --git a/appshell/appshell_extensions.cpp b/appshell/appshell_extensions.cpp index 4723876d9..773cc68a6 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_get_remote_debugging_port_error; 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,13 @@ 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_get_remote_debugging_port_error.empty() && g_remote_debugging_port > 0) { + responseArgs->SetInt(2, g_remote_debugging_port); + } + else { + responseArgs->SetNull(2); + errInfo = g_get_remote_debugging_port_error; + } } else { @@ -853,8 +861,13 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate { } if (callbackId != -1) { - responseArgs->SetInt(1, error); - + if (errInfo.empty()) { + responseArgs->SetInt(1, error); + } + else { + responseArgs->SetString(1, errInfo); + } + // Send response browser->SendProcessMessage(PID_RENDERER, response); } diff --git a/appshell/cefclient.cpp b/appshell/cefclient.cpp index f0f875658..07b7fe9fe 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_get_remote_debugging_port_error; #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_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; + } + 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_get_remote_debugging_port_error.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; } }