evgrd: allow listening for rpc on multiple inbound addrs

This commit is contained in:
darkfi
2024-09-24 14:17:42 +02:00
parent f4fa54a60d
commit 61b55002bf
2 changed files with 24 additions and 18 deletions

View File

@@ -59,7 +59,7 @@ const EVGRDB_PATH: &str = "/data/data/darkfi.darkwallet/evgr/";
#[cfg(target_os = "linux")]
const EVGRDB_PATH: &str = "~/.local/darkfi/darkwallet/evgr/";
const ENDPOINT: &str = "tcp://127.0.0.1:5588";
const ENDPOINT: &str = "tcp://agorism.dev:5588";
const CHANNEL: &str = "#random";
#[derive(Clone, Debug, SerialEncodable, SerialDecodable)]

View File

@@ -70,7 +70,7 @@ struct Args {
#[structopt(long, default_value = "tcp://127.0.0.1:5588")]
/// RPC server listen address
daemon_listen: Url,
daemon_listen: Vec<Url>,
#[structopt(long, default_value = "tcp://127.0.0.1:26690")]
/// JSON-RPC server listen address
@@ -368,22 +368,26 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
);
info!("Starting evgrd server");
let listener = Listener::new(args.daemon_listen, None).await?;
let ptlistener = listener.listen().await?;
let mut rpc_tasks = vec![];
for listen_url in args.daemon_listen {
let listener = Listener::new(listen_url, None).await?;
let ptlistener = listener.listen().await?;
let rpc_task = StoppableTask::new();
rpc_task.clone().start(
rpc_serve(ptlistener, daemon.clone(), ex.clone()),
|res| async move {
match res {
Ok(()) => panic!("Acceptor task should never complete without error status"),
//Err(Error::RpcServerStopped) => daemon_.stop_connections().await,
Err(e) => error!("Failed stopping RPC server: {}", e),
}
},
Error::RpcServerStopped,
ex.clone(),
);
let rpc_task = StoppableTask::new();
rpc_task.clone().start(
rpc_serve(ptlistener, daemon.clone(), ex.clone()),
|res| async move {
match res {
Ok(()) => panic!("Acceptor task should never complete without error status"),
//Err(Error::RpcServerStopped) => daemon_.stop_connections().await,
Err(e) => error!("Failed stopping RPC server: {}", e),
}
},
Error::RpcServerStopped,
ex.clone(),
);
rpc_tasks.push(rpc_task);
}
info!("Starting P2P network");
p2p.clone().start().await?;
@@ -424,7 +428,9 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
p2p.stop().await;
info!("Stopping RPC server");
rpc_task.stop().await;
for rpc_task in rpc_tasks {
rpc_task.stop().await;
}
dnet_task.stop().await;
deg_task.stop().await;