handle last peer error case [CI SKIP]

This commit is contained in:
shimunn
2019-04-03 14:07:28 +02:00
parent 88b68a1de9
commit 6a13b27c19
2 changed files with 18 additions and 4 deletions

View File

@@ -33,9 +33,11 @@ impl WireguardController for Userspace {
let value_as_num = || parse_err(value.parse::<u64>());
let mut peer: Option<Peer> = None;
let build_peer = |peer: &mut Option<Peer>, builder: &mut PeerBuilder| -> Result<()> {
let built: Result<Peer> = parse_err(builder.build());
*peer = Some(built?);
*builder = PeerBuilder::default();
if builder.has_key() {
let built: Result<Peer> = parse_err(builder.build());
*peer = Some(built?);
*builder = PeerBuilder::default();
}
Ok(())
};
let mut add_key = |peer: &mut Option<Peer>, key: ECCKey| -> Result<()> {
@@ -50,7 +52,15 @@ impl WireguardController for Userspace {
match key.as_ref() {
"" => {
//Empty line means end of data
build_peer(&mut peer, builder); //TODO: handle possible actual error case
build_peer(&mut peer, builder).map_err(|err| {
Error::new(
ErrorKind::InvalidData,
format!(
"Protocol error, wireguard supplied insufficent data: {}",
err
),
)
})?; //TODO: handle possible actual error case
}
"public_key" => {
add_key(&mut peer, parse_err(ECCKey::from_hex(value))?)?;