From 31e2be249e6563abd755469cf8c24920d6481990 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 28 Feb 2021 01:36:16 +0100 Subject: Re-do the way setting multiple headers works --- src/args.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/args.rs') diff --git a/src/args.rs b/src/args.rs index 7710cce..8fdb067 100644 --- a/src/args.rs +++ b/src/args.rs @@ -120,9 +120,9 @@ struct CliArgs { #[structopt(short = "t", long = "title")] title: Option, - /// Custom header from user - #[structopt(long = "header", parse(try_from_str = parse_header))] - header: Option, + /// Set custom header for responses + #[structopt(long = "header", parse(try_from_str = parse_header), number_of_values = 1)] + header: Vec, } /// Checks wether an interface is valid, i.e. it can be parsed into an IP address @@ -178,15 +178,13 @@ fn parse_auth(src: &str) -> Result { /// Custom header parser (allow multiple headers input) pub fn parse_header(src: &str) -> Result { - // Max customized header is limitted to 16 - let mut headers = [httparse::EMPTY_HEADER; 16]; + let mut headers = [httparse::EMPTY_HEADER; 1]; let mut header = src.to_string(); header.push('\n'); httparse::parse_headers(header.as_bytes(), &mut headers)?; let mut header_map = HeaderMap::new(); - - for h in headers.iter() { + if let Some(h) = headers.first() { if h.name != httparse::EMPTY_HEADER.name { header_map.insert( HeaderName::from_bytes(&Bytes::copy_from_slice(h.name.as_bytes())).unwrap(), -- cgit v1.2.3