alloy: Allow --remote-debugging-port=0 (fixes #3619)

This commit is contained in:
Vladimir Kharitonov 2024-02-07 18:42:06 +00:00 committed by Marshall Greenblatt
parent 5dc3cc13e7
commit 70471059cf
4 changed files with 32 additions and 25 deletions

View File

@ -432,11 +432,15 @@ typedef struct _cef_settings_t {
/// ///
/// Set to a value between 1024 and 65535 to enable remote debugging on the /// Set to a value between 1024 and 65535 to enable remote debugging on the
/// specified port. Also configurable using the "remote-debugging-port" /// specified port. Setting 0 will result in the selection of an ephemeral
/// command-line switch. Remote debugging can be accessed by loading the /// port, the port number will be printed as part of WebSocket endpoit URL
/// chrome://inspect page in Google Chrome. Port numbers 9222 and 9229 are /// to stderr. If the cache directory path is provided, the port will be
/// discoverable by default. Other port numbers may need to be configured via /// also written into <cache-dir>/DevToolsActivePort file.
/// "Discover network targets" on the Devices tab. /// Also configurable using the "remote-debugging-port" command-line switch.
/// Remote debugging can be accessed by loading the chrome://inspect page in
/// Google Chrome. Port numbers 9222 and 9229 are discoverable by default.
/// Other port numbers may need to be configured via "Discover network
/// targets" on the Devices tab.
/// ///
int remote_debugging_port; int remote_debugging_port;

View File

@ -70,28 +70,29 @@ class TCPServerSocketFactory : public content::DevToolsSocketFactory {
std::unique_ptr<content::DevToolsSocketFactory> CreateSocketFactory() { std::unique_ptr<content::DevToolsSocketFactory> CreateSocketFactory() {
const base::CommandLine& command_line = const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess(); *base::CommandLine::ForCurrentProcess();
// See if the user specified a port on the command line. Specifying 0 would // See if the user specified a port on the command line. Specifying 0
// result in the selection of an ephemeral port but that doesn't make sense // results in the selection of an ephemeral port, the port number will
// for CEF where the URL is otherwise undiscoverable. Also, don't allow // be printed as part of WebSocket endpoit URL to stderr.
// binding of ports between 0 and 1024 exclusive because they're normally // If the cache directory path is provided, the port will be also written
// restricted to root on Posix-based systems. // into <cache-dir>/DevToolsActivePort file.
uint16_t port = 0; //
// It's not allowed to bind ports between 0 and 1024 exclusive because
// they're normally restricted to root on Posix-based systems.
if (command_line.HasSwitch(switches::kRemoteDebuggingPort)) { if (command_line.HasSwitch(switches::kRemoteDebuggingPort)) {
int temp_port; int port = 0;
std::string port_str = std::string port_str =
command_line.GetSwitchValueASCII(switches::kRemoteDebuggingPort); command_line.GetSwitchValueASCII(switches::kRemoteDebuggingPort);
if (base::StringToInt(port_str, &temp_port) && temp_port >= 1024 &&
temp_port < 65535) { if (base::StringToInt(port_str, &port) &&
port = static_cast<uint16_t>(temp_port); (0 == port || (port >= 1024 && port < 65535))) {
return std::unique_ptr<content::DevToolsSocketFactory>(
new TCPServerSocketFactory("127.0.0.1", port));
} else { } else {
DLOG(WARNING) << "Invalid http debugger port number " << temp_port; DLOG(WARNING) << "Invalid http debugger port number '" << port_str << "'";
} }
} }
if (port == 0) {
return nullptr; return nullptr;
}
return std::unique_ptr<content::DevToolsSocketFactory>(
new TCPServerSocketFactory("127.0.0.1", port));
} }
} // namespace } // namespace

View File

@ -346,8 +346,9 @@ std::optional<int> AlloyMainDelegate::BasicStartupComplete() {
} }
} }
if (settings_->remote_debugging_port >= 1024 && if (settings_->remote_debugging_port == 0 ||
settings_->remote_debugging_port <= 65535) { (settings_->remote_debugging_port >= 1024 &&
settings_->remote_debugging_port <= 65535)) {
command_line->AppendSwitchASCII( command_line->AppendSwitchASCII(
switches::kRemoteDebuggingPort, switches::kRemoteDebuggingPort,
base::NumberToString(settings_->remote_debugging_port)); base::NumberToString(settings_->remote_debugging_port));

View File

@ -114,8 +114,9 @@ std::optional<int> ChromeMainDelegateCef::BasicStartupComplete() {
CefString(&settings_->javascript_flags).ToString()); CefString(&settings_->javascript_flags).ToString());
} }
if (settings_->remote_debugging_port >= 1024 && if (settings_->remote_debugging_port == 0 ||
settings_->remote_debugging_port <= 65535) { (settings_->remote_debugging_port >= 1024 &&
settings_->remote_debugging_port <= 65535)) {
command_line->AppendSwitchASCII( command_line->AppendSwitchASCII(
switches::kRemoteDebuggingPort, switches::kRemoteDebuggingPort,
base::NumberToString(settings_->remote_debugging_port)); base::NumberToString(settings_->remote_debugging_port));