@@ -891,11 +891,38 @@ fn parse_code(bytes: &mut Bytes<'_>) -> Result<u16> {
891
891
/// ][..]))));
892
892
/// ```
893
893
pub fn parse_headers < ' b : ' h , ' h > (
894
+ src : & ' b [ u8 ] ,
895
+ dst : & ' h mut [ Header < ' b > ] ,
896
+ ) -> Result < ( usize , & ' h [ Header < ' b > ] ) > {
897
+ parse_headers_with_config ( src, dst, & ParserConfig :: default ( ) )
898
+ }
899
+
900
+ /// Parse a buffer of bytes as headers with a specified configuration.
901
+ ///
902
+ /// The return value, if complete and successful, includes the index of the
903
+ /// buffer that parsing stopped at, and a sliced reference to the parsed
904
+ /// headers. The length of the slice will be equal to the number of properly
905
+ /// parsed headers.
906
+ ///
907
+ /// # Example
908
+ ///
909
+ /// ```
910
+ /// let buf = b"Host: foo.bar\nAccept: */*\n\nblah blah";
911
+ /// let mut headers = [httparse::EMPTY_HEADER; 4];
912
+ /// assert_eq!(httparse::parse_headers_with_config(buf, &mut headers, &httparse::ParserConfig::default()),
913
+ /// Ok(httparse::Status::Complete((27, &[
914
+ /// httparse::Header { name: "Host", value: b"foo.bar" },
915
+ /// httparse::Header { name: "Accept", value: b"*/*" }
916
+ /// ][..]))));
917
+ /// ```
918
+ #[ inline]
919
+ pub fn parse_headers_with_config < ' b : ' h , ' h > (
894
920
src : & ' b [ u8 ] ,
895
921
mut dst : & ' h mut [ Header < ' b > ] ,
922
+ config : & ParserConfig ,
896
923
) -> Result < ( usize , & ' h [ Header < ' b > ] ) > {
897
924
let mut iter = Bytes :: new ( src) ;
898
- let pos = complete ! ( parse_headers_iter( & mut dst, & mut iter, & ParserConfig :: default ( ) ) ) ;
925
+ let pos = complete ! ( parse_headers_iter( & mut dst, & mut iter, config ) ) ;
899
926
Ok ( Status :: Complete ( ( pos, dst) ) )
900
927
}
901
928
0 commit comments