@@ -956,6 +956,12 @@ impl Http1Transaction for Client {
956
956
} ) ) ;
957
957
}
958
958
959
+ if head. subject . is_informational ( ) {
960
+ if let Some ( callback) = ctx. on_informational {
961
+ callback. call ( head. into_response ( ( ) ) ) ;
962
+ }
963
+ }
964
+
959
965
// Parsing a 1xx response could have consumed the buffer, check if
960
966
// it is empty now...
961
967
if buf. is_empty ( ) {
@@ -1430,6 +1436,7 @@ mod tests {
1430
1436
h1_parser_config : Default :: default ( ) ,
1431
1437
h1_max_headers : None ,
1432
1438
h09_responses : false ,
1439
+ on_informational : & mut None ,
1433
1440
} ,
1434
1441
)
1435
1442
. unwrap ( )
@@ -1451,6 +1458,7 @@ mod tests {
1451
1458
h1_parser_config : Default :: default ( ) ,
1452
1459
h1_max_headers : None ,
1453
1460
h09_responses : false ,
1461
+ on_informational : & mut None ,
1454
1462
} ;
1455
1463
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
1456
1464
assert_eq ! ( raw. len( ) , 0 ) ;
@@ -1468,6 +1476,7 @@ mod tests {
1468
1476
h1_parser_config : Default :: default ( ) ,
1469
1477
h1_max_headers : None ,
1470
1478
h09_responses : false ,
1479
+ on_informational : & mut None ,
1471
1480
} ;
1472
1481
Server :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
1473
1482
}
@@ -1482,6 +1491,7 @@ mod tests {
1482
1491
h1_parser_config : Default :: default ( ) ,
1483
1492
h1_max_headers : None ,
1484
1493
h09_responses : true ,
1494
+ on_informational : & mut None ,
1485
1495
} ;
1486
1496
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
1487
1497
assert_eq ! ( raw, H09_RESPONSE ) ;
@@ -1498,6 +1508,7 @@ mod tests {
1498
1508
h1_parser_config : Default :: default ( ) ,
1499
1509
h1_max_headers : None ,
1500
1510
h09_responses : false ,
1511
+ on_informational : & mut None ,
1501
1512
} ;
1502
1513
Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
1503
1514
assert_eq ! ( raw, H09_RESPONSE ) ;
@@ -1518,6 +1529,7 @@ mod tests {
1518
1529
h1_parser_config,
1519
1530
h1_max_headers : None ,
1520
1531
h09_responses : false ,
1532
+ on_informational : & mut None ,
1521
1533
} ;
1522
1534
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
1523
1535
assert_eq ! ( raw. len( ) , 0 ) ;
@@ -1535,6 +1547,7 @@ mod tests {
1535
1547
h1_parser_config : Default :: default ( ) ,
1536
1548
h1_max_headers : None ,
1537
1549
h09_responses : false ,
1550
+ on_informational : & mut None ,
1538
1551
} ;
1539
1552
Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
1540
1553
}
@@ -1548,6 +1561,7 @@ mod tests {
1548
1561
h1_parser_config : Default :: default ( ) ,
1549
1562
h1_max_headers : None ,
1550
1563
h09_responses : false ,
1564
+ on_informational : & mut None ,
1551
1565
} ;
1552
1566
let parsed_message = Server :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
1553
1567
let mut orig_headers = parsed_message
@@ -1572,6 +1586,7 @@ mod tests {
1572
1586
h1_parser_config : Default :: default ( ) ,
1573
1587
h1_max_headers : None ,
1574
1588
h09_responses : false ,
1589
+ on_informational : & mut None ,
1575
1590
} ,
1576
1591
)
1577
1592
. expect ( "parse ok" )
@@ -1587,6 +1602,7 @@ mod tests {
1587
1602
h1_parser_config : Default :: default ( ) ,
1588
1603
h1_max_headers : None ,
1589
1604
h09_responses : false ,
1605
+ on_informational : & mut None ,
1590
1606
} ,
1591
1607
)
1592
1608
. expect_err ( comment)
@@ -1811,6 +1827,7 @@ mod tests {
1811
1827
h1_parser_config: Default :: default ( ) ,
1812
1828
h1_max_headers: None ,
1813
1829
h09_responses: false ,
1830
+ on_informational: & mut None ,
1814
1831
}
1815
1832
)
1816
1833
. expect( "parse ok" )
@@ -1826,6 +1843,7 @@ mod tests {
1826
1843
h1_parser_config : Default :: default ( ) ,
1827
1844
h1_max_headers : None ,
1828
1845
h09_responses : false ,
1846
+ on_informational : & mut None ,
1829
1847
} ,
1830
1848
)
1831
1849
. expect ( "parse ok" )
@@ -1841,6 +1859,7 @@ mod tests {
1841
1859
h1_parser_config : Default :: default ( ) ,
1842
1860
h1_max_headers : None ,
1843
1861
h09_responses : false ,
1862
+ on_informational : & mut None ,
1844
1863
} ,
1845
1864
)
1846
1865
. expect_err ( "parse should err" )
@@ -2433,6 +2452,7 @@ mod tests {
2433
2452
h1_parser_config : Default :: default ( ) ,
2434
2453
h1_max_headers : None ,
2435
2454
h09_responses : false ,
2455
+ on_informational : & mut None ,
2436
2456
} ,
2437
2457
)
2438
2458
. expect ( "parse ok" )
@@ -2470,6 +2490,7 @@ mod tests {
2470
2490
h1_parser_config : Default :: default ( ) ,
2471
2491
h1_max_headers : max_headers,
2472
2492
h09_responses : false ,
2493
+ on_informational : & mut None ,
2473
2494
} ,
2474
2495
) ;
2475
2496
if should_success {
@@ -2488,6 +2509,7 @@ mod tests {
2488
2509
h1_parser_config : Default :: default ( ) ,
2489
2510
h1_max_headers : max_headers,
2490
2511
h09_responses : false ,
2512
+ on_informational : & mut None ,
2491
2513
} ,
2492
2514
) ;
2493
2515
if should_success {
0 commit comments