1
0
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:
Martin Hoffmann
2020-04-20 14:55:12 +02:00
committed by GitHub
2 changed files with 24 additions and 14 deletions

View File

@ -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.

View File

@ -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(