You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In this code, HeaderMap::from_iter panics for a set of headers that can fit into a HeaderMap. Most likely the size hint should be capped to 24576 to avoid this panic until too many names are appended.
use http::{HeaderMap, HeaderName, HeaderValue};
fn main() {
// If we add 24576 names here, then we cannot append extra values.
let mut headers = (0..24575)
.map(|i| {
(
HeaderName::from_bytes(format!("H{}", i).as_bytes()).unwrap(),
HeaderValue::from_static("0"),
)
})
.collect::<HeaderMap>();
// Append more values to existing name
let mut i = 1;
while i < 8195 && headers.append(
HeaderName::from_bytes(format!("H{}", 1).as_bytes()).unwrap(),
HeaderValue::from_str(&i.to_string()).unwrap(),
) {
i += 1;
}
assert_eq!(headers.len(), 32769);
// Does not panic
HeaderMap::from_iter(headers.iter().map(|(n, v)| (n.clone(), v.clone())));
// Panics
HeaderMap::from_iter(headers.iter().map(|(n, v)| (n.clone(), v.clone())).collect::<Vec<_>>());
}
The text was updated successfully, but these errors were encountered:
In this code,
HeaderMap::from_iter
panics for a set of headers that can fit into aHeaderMap
. Most likely the size hint should be capped to 24576 to avoid this panic until too many names are appended.The text was updated successfully, but these errors were encountered: