Skip to content

Commit edb7010

Browse files
committed
Fall back to random port in built-in WebSocket RPC server in farmer
1 parent d941666 commit edb7010

File tree

1 file changed

+20
-4
lines changed
  • crates/subspace-farmer/src/bin/subspace-farmer/commands

1 file changed

+20
-4
lines changed

crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use anyhow::{anyhow, Result};
22
use jsonrpsee::ws_server::WsServerBuilder;
3-
use log::info;
3+
use log::{info, warn};
44
use std::mem;
55
use std::sync::Arc;
66
use std::time::Duration;
@@ -24,7 +24,7 @@ pub(crate) async fn farm(
2424
custom_path,
2525
listen_on,
2626
node_rpc_url,
27-
ws_server_listen_addr,
27+
mut ws_server_listen_addr,
2828
reward_address,
2929
plot_size,
3030
}: FarmingArgs,
@@ -79,9 +79,25 @@ pub(crate) async fn farm(
7979
.await?;
8080

8181
// Start RPC server
82-
let ws_server = WsServerBuilder::default()
82+
let ws_server = match WsServerBuilder::default()
8383
.build(ws_server_listen_addr)
84-
.await?;
84+
.await
85+
{
86+
Ok(ws_server) => ws_server,
87+
Err(jsonrpsee::core::Error::Transport(error)) => {
88+
warn!(
89+
"Failed to start WebSocket RPC server on {ws_server_listen_addr} ({error}),\
90+
trying random port"
91+
);
92+
ws_server_listen_addr.set_port(0);
93+
WsServerBuilder::default()
94+
.build(ws_server_listen_addr)
95+
.await?
96+
}
97+
Err(error) => {
98+
return Err(error.into());
99+
}
100+
};
85101
let ws_server_addr = ws_server.local_addr()?;
86102
let rpc_server = RpcServerImpl::new(
87103
record_size,

0 commit comments

Comments
 (0)