mirror of
https://github.com/NLnetLabs/routinator.git
synced 2024-05-19 06:50:04 +00:00
Merge pull request #296 from NLnetLabs/no-panic-on-empty-listener
Don’t panic if RTR or HTTP listener addresses are empty.
This commit is contained in:
17
src/http.rs
17
src/http.rs
@ -16,7 +16,7 @@ use std::sync::Arc;
|
||||
use chrono::{Duration, Utc};
|
||||
use clap::crate_version;
|
||||
use futures::stream;
|
||||
use futures::future::select_all;
|
||||
use futures::future::{pending, select_all};
|
||||
use hyper::{Body, Method, Request, Response, Server, StatusCode};
|
||||
use hyper::service::{make_service_fn, service_fn};
|
||||
use log::error;
|
||||
@ -48,11 +48,16 @@ pub fn http_listener(
|
||||
}
|
||||
|
||||
async fn _http_listener(origins: OriginsHistory, addrs: Vec<SocketAddr>) {
|
||||
let _ = select_all(
|
||||
addrs.iter().map(|addr| {
|
||||
tokio::spawn(single_http_listener(*addr, origins.clone()))
|
||||
})
|
||||
).await;
|
||||
if addrs.is_empty() {
|
||||
pending::<()>().await;
|
||||
}
|
||||
else {
|
||||
let _ = select_all(
|
||||
addrs.iter().map(|addr| {
|
||||
tokio::spawn(single_http_listener(*addr, origins.clone()))
|
||||
})
|
||||
).await;
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a future for a single HTTP listener.
|
||||
|
21
src/rtr.rs
21
src/rtr.rs
@ -2,7 +2,7 @@
|
||||
|
||||
use std::future::Future;
|
||||
use std::net::SocketAddr;
|
||||
use futures::future::select_all;
|
||||
use futures::future::{pending, select_all};
|
||||
use log::error;
|
||||
use rpki_rtr::server::{NotifySender, Server};
|
||||
use tokio::net::TcpListener;
|
||||
@ -24,13 +24,18 @@ async fn _rtr_listener(
|
||||
sender: NotifySender,
|
||||
addrs: Vec<SocketAddr>,
|
||||
) {
|
||||
let _ = select_all(
|
||||
addrs.iter().map(|addr| {
|
||||
tokio::spawn(single_rtr_listener(
|
||||
*addr, origins.clone(), sender.clone()
|
||||
))
|
||||
})
|
||||
).await;
|
||||
if addrs.is_empty() {
|
||||
pending::<()>().await;
|
||||
}
|
||||
else {
|
||||
let _ = select_all(
|
||||
addrs.iter().map(|addr| {
|
||||
tokio::spawn(single_rtr_listener(
|
||||
*addr, origins.clone(), sender.clone()
|
||||
))
|
||||
})
|
||||
).await;
|
||||
}
|
||||
}
|
||||
|
||||
async fn single_rtr_listener(
|
||||
|
Reference in New Issue
Block a user