#[test] fn chunked_to_known() { let m = Message::read_http(&mut Cursor::new(CHUNKED_HTTP)).unwrap();
assert!(m.header().get(TRANSFER_ENCODING).is_none());
#[test] fn chunked_to_indefinite() { let m = Message::read_http(&mut Cursor::new(CHUNKED_HTTP)).unwrap();
assert!(m.header().get(TRANSFER_ENCODING).is_none());
/// Verify that Connection and Proxy-Connection are stripped out properly. #[test] fn connection_header() { const REQUEST: &[u8] = b"POST test.example HTTP/1.1\r\n\
Host: example.com\r\n\
other: test\r\n\
Connection: sample\r\n\
Connection: other, garbage\r\n\
sample: test2\r\n\
px: test3\r\n\
proXy-connection: px\r\n\
\r\n";
let m = Message::read_http(&mut Cursor::new(REQUEST)).unwrap();
assert!(m.header().get(b"other").is_none());
assert!(m.header().get(b"sample").is_none());
assert!(m.header().get(b"garbage").is_none());
assert!(m.header().get(b"connection").is_none());
assert!(m.header().get(b"proxy-connection").is_none());
assert!(m.header().get(b"px").is_none());
}
/// Verify that hop-by-hop headers (other than transfer-encoding) are stripped out properly. #[test] fn hop_by_hop() { const REQUEST: &[u8] = b"POST test.example HTTP/1.1\r\n\
Host: example.com\r\n\
keep-alive: 1\r\n\
te: trailers\r\n\
trailer: te\r\n\
upgrade: h2c\r\n\
\r\n";
let m = Message::read_http(&mut Cursor::new(REQUEST)).unwrap();
assert!(m.header().get(b"keep-alive").is_none());
assert!(m.header().get(b"te").is_none());
assert!(m.header().get(b"trailer").is_none());
assert!(m.header().get(b"transfer-encoding").is_none());
assert!(m.header().get(b"upgrade").is_none());
}
/// Verify that very bad chunked encoding produces a result. #[test] fn bad_chunked() { const REQUEST: &[u8] = b"POST test.example HTTP/1.1\r\n\
Transfer-Encoding: chunked\r\n\
\r\n";
let e = Message::read_http(&mut Cursor::new(REQUEST)).unwrap_err();
assert!(matches!(e, Error::Truncated));
}
/// If a length field overruns the buffer, stop. #[test] fn oversized() { const REQUEST: &[u8] = &[0x00, 0x01]; let e = Message::read_bhttp(&mut Cursor::new(REQUEST)).unwrap_err();
assert!(matches!(e, Error::Truncated));
}
/// If a length field overruns the buffer, stop before over-allocating. #[test] fn oversized_max() { const REQUEST: &[u8] = &[0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]; let e = Message::read_bhttp(&mut Cursor::new(REQUEST)).unwrap_err();
assert!(matches!(e, Error::Truncated));
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.