@@ -956,6 +956,12 @@ impl Http1Transaction for Client {
956956 } ) ) ;
957957 }
958958
959+ if head. subject . is_informational ( ) {
960+ if let Some ( callback) = ctx. on_informational {
961+ callback. call ( head. into_response ( ( ) ) ) ;
962+ }
963+ }
964+
959965 // Parsing a 1xx response could have consumed the buffer, check if
960966 // it is empty now...
961967 if buf. is_empty ( ) {
@@ -1430,6 +1436,7 @@ mod tests {
14301436 h1_parser_config : Default :: default ( ) ,
14311437 h1_max_headers : None ,
14321438 h09_responses : false ,
1439+ on_informational : & mut None ,
14331440 } ,
14341441 )
14351442 . unwrap ( )
@@ -1451,6 +1458,7 @@ mod tests {
14511458 h1_parser_config : Default :: default ( ) ,
14521459 h1_max_headers : None ,
14531460 h09_responses : false ,
1461+ on_informational : & mut None ,
14541462 } ;
14551463 let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
14561464 assert_eq ! ( raw. len( ) , 0 ) ;
@@ -1468,6 +1476,7 @@ mod tests {
14681476 h1_parser_config : Default :: default ( ) ,
14691477 h1_max_headers : None ,
14701478 h09_responses : false ,
1479+ on_informational : & mut None ,
14711480 } ;
14721481 Server :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
14731482 }
@@ -1482,6 +1491,7 @@ mod tests {
14821491 h1_parser_config : Default :: default ( ) ,
14831492 h1_max_headers : None ,
14841493 h09_responses : true ,
1494+ on_informational : & mut None ,
14851495 } ;
14861496 let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
14871497 assert_eq ! ( raw, H09_RESPONSE ) ;
@@ -1498,6 +1508,7 @@ mod tests {
14981508 h1_parser_config : Default :: default ( ) ,
14991509 h1_max_headers : None ,
15001510 h09_responses : false ,
1511+ on_informational : & mut None ,
15011512 } ;
15021513 Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
15031514 assert_eq ! ( raw, H09_RESPONSE ) ;
@@ -1518,6 +1529,7 @@ mod tests {
15181529 h1_parser_config,
15191530 h1_max_headers : None ,
15201531 h09_responses : false ,
1532+ on_informational : & mut None ,
15211533 } ;
15221534 let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
15231535 assert_eq ! ( raw. len( ) , 0 ) ;
@@ -1535,6 +1547,7 @@ mod tests {
15351547 h1_parser_config : Default :: default ( ) ,
15361548 h1_max_headers : None ,
15371549 h09_responses : false ,
1550+ on_informational : & mut None ,
15381551 } ;
15391552 Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
15401553 }
@@ -1548,6 +1561,7 @@ mod tests {
15481561 h1_parser_config : Default :: default ( ) ,
15491562 h1_max_headers : None ,
15501563 h09_responses : false ,
1564+ on_informational : & mut None ,
15511565 } ;
15521566 let parsed_message = Server :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
15531567 let mut orig_headers = parsed_message
@@ -1572,6 +1586,7 @@ mod tests {
15721586 h1_parser_config : Default :: default ( ) ,
15731587 h1_max_headers : None ,
15741588 h09_responses : false ,
1589+ on_informational : & mut None ,
15751590 } ,
15761591 )
15771592 . expect ( "parse ok" )
@@ -1587,6 +1602,7 @@ mod tests {
15871602 h1_parser_config : Default :: default ( ) ,
15881603 h1_max_headers : None ,
15891604 h09_responses : false ,
1605+ on_informational : & mut None ,
15901606 } ,
15911607 )
15921608 . expect_err ( comment)
@@ -1811,6 +1827,7 @@ mod tests {
18111827 h1_parser_config: Default :: default ( ) ,
18121828 h1_max_headers: None ,
18131829 h09_responses: false ,
1830+ on_informational: & mut None ,
18141831 }
18151832 )
18161833 . expect( "parse ok" )
@@ -1826,6 +1843,7 @@ mod tests {
18261843 h1_parser_config : Default :: default ( ) ,
18271844 h1_max_headers : None ,
18281845 h09_responses : false ,
1846+ on_informational : & mut None ,
18291847 } ,
18301848 )
18311849 . expect ( "parse ok" )
@@ -1841,6 +1859,7 @@ mod tests {
18411859 h1_parser_config : Default :: default ( ) ,
18421860 h1_max_headers : None ,
18431861 h09_responses : false ,
1862+ on_informational : & mut None ,
18441863 } ,
18451864 )
18461865 . expect_err ( "parse should err" )
@@ -2433,6 +2452,7 @@ mod tests {
24332452 h1_parser_config : Default :: default ( ) ,
24342453 h1_max_headers : None ,
24352454 h09_responses : false ,
2455+ on_informational : & mut None ,
24362456 } ,
24372457 )
24382458 . expect ( "parse ok" )
@@ -2470,6 +2490,7 @@ mod tests {
24702490 h1_parser_config : Default :: default ( ) ,
24712491 h1_max_headers : max_headers,
24722492 h09_responses : false ,
2493+ on_informational : & mut None ,
24732494 } ,
24742495 ) ;
24752496 if should_success {
@@ -2488,6 +2509,7 @@ mod tests {
24882509 h1_parser_config : Default :: default ( ) ,
24892510 h1_max_headers : max_headers,
24902511 h09_responses : false ,
2512+ on_informational : & mut None ,
24912513 } ,
24922514 ) ;
24932515 if should_success {
0 commit comments