Add support for launching devtools server on random port

Assign random port to devtools server in case user does not specify a
port explicitly and report it to the embedding layer for display to user.
This commit is contained in:
Kunal Mohan 2020-03-07 20:23:14 +05:30
parent 6ab923c8e8
commit 94db0d61cb
No known key found for this signature in database
GPG key ID: 2B475A4524237BAC
10 changed files with 73 additions and 9 deletions

View file

@ -154,7 +154,20 @@ fn run_server(
port: u16,
embedder: EmbedderProxy,
) {
let listener = TcpListener::bind(&("0.0.0.0", port)).unwrap();
let bound = TcpListener::bind(&("0.0.0.0", port)).ok().and_then(|l| {
l.local_addr()
.map(|addr| addr.port())
.ok()
.map(|port| (l, port))
});
let port = bound.as_ref().map(|(_, port)| *port).ok_or(());
embedder.send((None, EmbedderMsg::OnDevtoolsStarted(port)));
let listener = match bound {
Some((l, _)) => l,
None => return,
};
let mut registry = ActorRegistry::new();