@@ -991,6 +991,13 @@ impl Http1Transaction for Client {
991
991
} ) ) ;
992
992
}
993
993
994
+ #[ cfg( feature = "ffi" ) ]
995
+ if head. subject . is_informational ( ) {
996
+ if let Some ( callback) = ctx. on_informational {
997
+ callback. call ( head. into_response ( crate :: Body :: empty ( ) ) ) ;
998
+ }
999
+ }
1000
+
994
1001
// Parsing a 1xx response could have consumed the buffer, check if
995
1002
// it is empty now...
996
1003
if buf. is_empty ( ) {
@@ -1428,6 +1435,8 @@ mod tests {
1428
1435
preserve_header_case : false ,
1429
1436
h09_responses : false ,
1430
1437
#[ cfg( feature = "ffi" ) ]
1438
+ on_informational : & mut None ,
1439
+ #[ cfg( feature = "ffi" ) ]
1431
1440
raw_headers : false ,
1432
1441
} ,
1433
1442
)
@@ -1453,6 +1462,8 @@ mod tests {
1453
1462
preserve_header_case : false ,
1454
1463
h09_responses : false ,
1455
1464
#[ cfg( feature = "ffi" ) ]
1465
+ on_informational : & mut None ,
1466
+ #[ cfg( feature = "ffi" ) ]
1456
1467
raw_headers : false ,
1457
1468
} ;
1458
1469
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
@@ -1473,6 +1484,8 @@ mod tests {
1473
1484
preserve_header_case : false ,
1474
1485
h09_responses : false ,
1475
1486
#[ cfg( feature = "ffi" ) ]
1487
+ on_informational : & mut None ,
1488
+ #[ cfg( feature = "ffi" ) ]
1476
1489
raw_headers : false ,
1477
1490
} ;
1478
1491
Server :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
@@ -1491,6 +1504,8 @@ mod tests {
1491
1504
preserve_header_case : false ,
1492
1505
h09_responses : true ,
1493
1506
#[ cfg( feature = "ffi" ) ]
1507
+ on_informational : & mut None ,
1508
+ #[ cfg( feature = "ffi" ) ]
1494
1509
raw_headers : false ,
1495
1510
} ;
1496
1511
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
@@ -1511,6 +1526,8 @@ mod tests {
1511
1526
preserve_header_case : false ,
1512
1527
h09_responses : false ,
1513
1528
#[ cfg( feature = "ffi" ) ]
1529
+ on_informational : & mut None ,
1530
+ #[ cfg( feature = "ffi" ) ]
1514
1531
raw_headers : false ,
1515
1532
} ;
1516
1533
Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
@@ -1535,6 +1552,8 @@ mod tests {
1535
1552
preserve_header_case : false ,
1536
1553
h09_responses : false ,
1537
1554
#[ cfg( feature = "ffi" ) ]
1555
+ on_informational : & mut None ,
1556
+ #[ cfg( feature = "ffi" ) ]
1538
1557
raw_headers : false ,
1539
1558
} ;
1540
1559
let msg = Client :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
@@ -1556,6 +1575,8 @@ mod tests {
1556
1575
preserve_header_case : false ,
1557
1576
h09_responses : false ,
1558
1577
#[ cfg( feature = "ffi" ) ]
1578
+ on_informational : & mut None ,
1579
+ #[ cfg( feature = "ffi" ) ]
1559
1580
raw_headers : false ,
1560
1581
} ;
1561
1582
Client :: parse ( & mut raw, ctx) . unwrap_err ( ) ;
@@ -1572,6 +1593,8 @@ mod tests {
1572
1593
preserve_header_case : true ,
1573
1594
h09_responses : false ,
1574
1595
#[ cfg( feature = "ffi" ) ]
1596
+ on_informational : & mut None ,
1597
+ #[ cfg( feature = "ffi" ) ]
1575
1598
raw_headers : false ,
1576
1599
} ;
1577
1600
let parsed_message = Server :: parse ( & mut raw, ctx) . unwrap ( ) . unwrap ( ) ;
@@ -1609,6 +1632,8 @@ mod tests {
1609
1632
preserve_header_case : false ,
1610
1633
h09_responses : false ,
1611
1634
#[ cfg( feature = "ffi" ) ]
1635
+ on_informational : & mut None ,
1636
+ #[ cfg( feature = "ffi" ) ]
1612
1637
raw_headers : false ,
1613
1638
} ,
1614
1639
)
@@ -1627,6 +1652,8 @@ mod tests {
1627
1652
preserve_header_case : false ,
1628
1653
h09_responses : false ,
1629
1654
#[ cfg( feature = "ffi" ) ]
1655
+ on_informational : & mut None ,
1656
+ #[ cfg( feature = "ffi" ) ]
1630
1657
raw_headers : false ,
1631
1658
} ,
1632
1659
)
@@ -1854,6 +1881,8 @@ mod tests {
1854
1881
preserve_header_case: false ,
1855
1882
h09_responses: false ,
1856
1883
#[ cfg( feature = "ffi" ) ]
1884
+ on_informational: & mut None ,
1885
+ #[ cfg( feature = "ffi" ) ]
1857
1886
raw_headers: false ,
1858
1887
}
1859
1888
)
@@ -1872,6 +1901,8 @@ mod tests {
1872
1901
preserve_header_case : false ,
1873
1902
h09_responses : false ,
1874
1903
#[ cfg( feature = "ffi" ) ]
1904
+ on_informational : & mut None ,
1905
+ #[ cfg( feature = "ffi" ) ]
1875
1906
raw_headers : false ,
1876
1907
} ,
1877
1908
)
@@ -1890,6 +1921,8 @@ mod tests {
1890
1921
preserve_header_case : false ,
1891
1922
h09_responses : false ,
1892
1923
#[ cfg( feature = "ffi" ) ]
1924
+ on_informational : & mut None ,
1925
+ #[ cfg( feature = "ffi" ) ]
1893
1926
raw_headers : false ,
1894
1927
} ,
1895
1928
)
@@ -2383,6 +2416,8 @@ mod tests {
2383
2416
preserve_header_case : false ,
2384
2417
h09_responses : false ,
2385
2418
#[ cfg( feature = "ffi" ) ]
2419
+ on_informational : & mut None ,
2420
+ #[ cfg( feature = "ffi" ) ]
2386
2421
raw_headers : false ,
2387
2422
} ,
2388
2423
)
@@ -2465,6 +2500,8 @@ mod tests {
2465
2500
preserve_header_case : false ,
2466
2501
h09_responses : false ,
2467
2502
#[ cfg( feature = "ffi" ) ]
2503
+ on_informational : & mut None ,
2504
+ #[ cfg( feature = "ffi" ) ]
2468
2505
raw_headers : false ,
2469
2506
} ,
2470
2507
)
@@ -2503,6 +2540,8 @@ mod tests {
2503
2540
preserve_header_case : false ,
2504
2541
h09_responses : false ,
2505
2542
#[ cfg( feature = "ffi" ) ]
2543
+ on_informational : & mut None ,
2544
+ #[ cfg( feature = "ffi" ) ]
2506
2545
raw_headers : false ,
2507
2546
} ,
2508
2547
)
0 commit comments