alloy: Allow --remote-debugging-port=0 (fixes #3619)
This commit is contained in:
parent
5dc3cc13e7
commit
70471059cf
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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))) {
|
||||||
} else {
|
|
||||||
DLOG(WARNING) << "Invalid http debugger port number " << temp_port;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (port == 0) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
return std::unique_ptr<content::DevToolsSocketFactory>(
|
return std::unique_ptr<content::DevToolsSocketFactory>(
|
||||||
new TCPServerSocketFactory("127.0.0.1", port));
|
new TCPServerSocketFactory("127.0.0.1", port));
|
||||||
|
} else {
|
||||||
|
DLOG(WARNING) << "Invalid http debugger port number '" << port_str << "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue