File: RELEASE_NOTES.txt

package info (click to toggle)
httpcomponents-core5 5.4-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 8,496 kB
  • sloc: java: 91,130; xml: 813; sh: 184; makefile: 2
file content (3862 lines) | stat: -rw-r--r-- 154,501 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
Release 5.4
------------------

This is the first GA release in the 5.4 release series that improves HTTP/2 protocol
support by ensuring conformance to the latest HTTP specification (RFC 9113) and adds
support for Unix domain sockets.

Notable changes and features included in the 5.4 series:

* Experimental OFFLOCK (lock-free) connection pool.

* Conformance to RFC 9218 (Extensible Prioritization Scheme for HTTP).

* Improved conformance to RFC 9113 (Hypertext Transfer Protocol Version 2).

* Five-second TCP keep-alive enabled by default.

* Unix domain socket support by the classic and async transports.

* Redesign of classic over async API bridge.

* Improved URI encoding per RFC 3986.

* QUERY method support.

* Improved idle connection validation in the async transport.


Change Log
-------------------

* Fix validation of 0/8 IPv4 addresses.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Route-segmented pool: fix timeout race; add direct hand-off; enforce TTL on lease;
  bound scans (#575).
  Contributed by Arturo Bernal <abernal at apache.org>

* Ensure connection is closed immediately upon socket timeout.
  Contributed by Alexis Le Dantec <aledantec at palantir.com>

* Accept leading zeros in IPv4-mapped IPv6 (#568).
  Contributed by Arturo Bernal <abernal at apache.org>



Release 5.4-alpha1
------------------

This is the first ALPHA release in the 5.4 release series that improves HTTP/2 protocol
support by ensuring conformance to the latest HTTP specification (RFC 9113) and adds
support for Unix domain sockets.

This release also includes all the fixes from the stable 5.3 branch.


Change Log
-------------------

* Experimental RouteSegmentedConnPool (OFFLOCK): lock-free, route-segmented, disposal off
  critical path.
  Contributed by Arturo Bernal <abernal at apache.org>

* Configurable AuthorityResolver for async server bootstraps.
  Contributed by Christian de Waal <christian at de.waal.name>

* RFC 9218 HTTP/2 Priority support (#552).
  Contributed by Arturo Bernal <abernal at apache.org>

* Stale connection check for the async protocol handlers.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Corrected JavaDoc for HttpConnection#close to reference correct CloseMode mode (#561).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-785: Improved Javadocs of TlsStrategy implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-785: Updated request execution example with Conscrypt as a security provider.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Five-second TCP keep-alive enabled by default.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* RFC 9113 conformance: H2 stream can be cancelled (reset) locally from multiple threads.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Strict SETTINGS_MAX_CONCURRENT_STREAMS enforcement for inbound and
  outbound streams.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Use command queue to activate streams reserved with a push promise.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Improved H2 stream creation and initialization, improved H2 stream
  state tracking and tracking of total stream counts.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Corrected H2 stream ID generation and verification logic.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Refactoring of internal H2 stream APIs.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Merge multiple Cookie Header fields into a single field after
  decompression.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Stricter validation of message fields.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: RST_STREAM with NO_ERROR error code gracefully terminates the request
  on the client if the server has sent the complete response (the stream has been closed
  remotely).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Revised graceful / immediate H2 connection shutdown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Ensure the ID of promised streams is valid (greater than the last seen).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Treat ENABLE_PUSH set to 1 transmitted by the server endpoint as
  a protocol error.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 9113 conformance: Treat attempts to send frames on a locally closed stream as a protocol
  violation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTP/1.1 async protocol handler to read message data more greedily.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Optimized release of resources associated with H2 streams. #releaseResources should be called
  only once.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* H2 transport to enforce a max limit on the number of CONTINUATION frames.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Socket keep-alive option support.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Discontinue use of SocketSupport to set extended socket options.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* IOFunction functional interface.
  Contributed by Arturo Bernal <abernal at apache.org>

* Safeguard for infinite unproductive loop in non-blocking SSL session #527.
  Contributed by Ali Farahani <ali.farahani at genesys.com>

* Slightly better and efficient #toHexString method.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTP/2 protocol handler to allow configuring FrameFractory (#525).
  Contributed by Marko <marco at sitar.dev>

* ContentType.APPLICATION_ZIP_COMPRESSED (#524).
  Contributed by Gary Gregory <ggregory at apache.org>

* I/O reactors to support Unix domain sockets.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Redesign of classic over async bridge.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Shared buffers to support timeout on blocking operations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added a method to the async response channel to terminate the ongoing message exchange
  due to an internal error.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Avoid legacy Socket API in reactor code.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Support for parsing of headers representing a list of complex elements.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 3986 conformant URI encoding policy (#517).
  Contributed by Arturo Bernal <abernal at apache.org>

* Protocol negotiation handlers to use exception callback to report unexpected exceptions
  during the protocol negotiation handshake.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Updated error message in ProtocolVersion.
  Contributed by Mavelous <github at mavelo.us>

* Handle overflow in Deadline calculation to ensure correct behavior for large time values
  (#512).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-774: Update window management improvements.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added more convenience methods to classic request / response builders.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-773: Introduced customizable strategy to select I/O dispatch worker for new I/O
  channels.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Optimize connection close logic to resolve timeout delay issue (#508).
  Contributed by Noah <yuns994@gmail.com>

* NoConnectionReuseStrategy
  Contributed by Johnny Lim <izeye@naver.com>

* Polish Javadoc for HttpResponseInterceptor.
  Contributed by Johnny Lim <izeye@naver.com>

* HTTP Method QUERY support (#499).
  Contributed by Mario Daniel Ruiz Saavedra <desiderantes93 at gmail.com>

* Ensure Date header is always present and replace invalid values. (#500).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTP/1.1 TE header interceptor and strict client/server option (#498).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCLIENT-2233: Metrics listener for IOReactor thread pool monitoring (#490).
  Contributed by Arturo Bernal <abernal at apache.org>

* A FutureContribution should not allow a null BasicFuture (#485).
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-770: Introduced `plusAsBlank` parameter for dynamic configuration.
  Contributed by Arturo Bernal <abernal at apache.org>



Release 5.3
------------------

This is the first GA release in the 5.3 release series. This release finalizes the 5.3 APIs
and improves integration test configuration APIs along with many test code improvements.


Notable changes and features included in the 5.3 series:

* Improved conformance to RFC 9110 and RFC 9112.

* UTF-8 encoding to be used by default for text where appropriate.

* Compatibility with Java Virtual Threads and Java 21 Runtime.

* Message parsing API improvements and performance optimization.

* TLS client endpoints to make use of JSSE Endpoint Identification by default.

* Redesign of server-side request routing API.

* Redesign of TLS session handling by classic (blocking) connections.


Change Log
-------------------

* Improved Javadoc.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-761: Support ExtendedSocketOption (#473).
  Contributed by kkewwei <kewei.11 at bytedance.com>

* Attempt to shut down the connection gracefully in case of a TLS handshake exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Test classes and methods should have default package visibility.
  Contributed by strangelookingnerd <49242855+strangelookingnerd at users.noreply.github.com>

* Simplified configuration API of test servers and clients.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.3 BETA1
------------------

This is the first BETA release in the 5.3 release series. It features a re-designed
classic (blocking) TLS session management and server-side request routing APIs.
It is likely to be the last BETA release in the 5.3 release series.


Change Log
-------------------

* Improved Javadoc.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCLIENT-2328: Blocking i/o connections to check if the opposite TLS endpoint has been
  closed by the opposite endpoint while writing out request body.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-2328: Better control over the TLS layer of blocking connections. TLS layer no
  longer automatically closes the underlying network socket. Connections close the network
  socket manually after TLS session termination.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* More flexible TLS layer initialization by the classic HTTP server bootstrap.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-766: redesign of server-side request routing.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: corrected exception type thrown in case of unexpected connection termination.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Made HttpCoreContext consistent with the behavior of HttpContext implementations in HttpClient.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: HTTP/1.1 server-side stream handler to validate the request message before
  the request routing and handler resolution.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HPackDecoder incorrectly calculates required buffer length causing G1 Humongous Allocation
  and OOM (#465).
  Contributed by crazylulululu <42406448+crazylulululu at users.noreply.github.com>

* Update the method parameter of InetAddressUtils from String to CharSequence.
  Contributed by wangkai <wangkaicloud at 163.com>



Release 5.3 ALPHA2
------------------

This is the second and likely the last ALPHA release in the 5.3 release series.
It finalizes the API changes introduced in the previous ALPHA release and also
improves Message Parsing APIs and client-side TLS defaults by making use of
JSSE Endpoint Identification.


Change Log
-------------------

* HttpCoreContext to use instance variables for standard attributes.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* TLS client endpoints to make use of JSSE Endpoint Identification by default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Mention HttpStatus and StatusCode in JavaDoc in more places (#454).
  Contributed by Dmitrii Naumenko <dimanaumenko1994 at mail.ru>

* Improved protocol version parsing.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Replaced token delimitation based on BitSet with a predicate function.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-763: remove checks that assert a path does not start with "//".
  Contributed by Marco Bungart <marco.bungart at googlemail.com>

* Corrected declaration of generic Header iterators.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.3 ALPHA1
------------------

This is the first ALPHA release in the 5.3 release series that improves HTTP protocol support by ensuring conformance
to the latest HTTP specification (RFC 9110 and RFC 9112) and also ensuring compatibility with Java Virtual Threads by
replacing 'synchronized' keywords in critical sections with Java lock primitives.


Change Log
-------------------

* Removed AccessController checks (AccessController deprecated in Java 21).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Support for percent coding as defined in RFC 5987.
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-756: Improved Transfer-Encoding handling and message frame validity verification per RFC 9112 section 6.1.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Stricter parsing of response status code per RFC 9112 section 3.2; less intermediate garbage while
  parsing response status lines.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Support for the effective HTTP/1.x protocol level config parameter; HTTP/1.1 endpoints to signal their
  actual supported protocol level (the minor version in HTTP/1.x) in the message control data as per RFC 9110
  section 6.2.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Authority from an absolute request URI to take precedence over Host header per RFC 9112 section 3.2.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Client protocol handlers to try to send `Host` as the first header in the request header section
  per RFC 9110 section 7.2.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Updated response status codes as per RFC 9110 section 18.3.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Expect-Continue handshake improvements per RFC 9110 section 10.1.1.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Additional message support methods.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Support methods for handling hop-by-hop and connection specific headers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Reject HTTPS requests received over insecure (non-TLS) connection per RFC 9110 section 7.4.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-756: Replace CR, LF, NULL in header values with SP per RFC 9110 section 5.5.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-759: Add Content-Length to POST, PUT and PATCH with null entity request content (#435).
  Contributed by Billy <10576351+chrysophylax at users.noreply.github.com>

* Improved name/value parsing code.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* ':path' pseudo-Header validation for HTTP/2 Requests (#428).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-756: Implement RFC9110 Content-Type validation for OPTIONS requests. Enforce the presence of a valid
  Content-Type header for OPTIONS requests containing content as per RFC9110 (#424).
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-756: Enforced non-empty host identifier for http/https URIs. (#423)
  Contributed by Arturo Bernal <abernal at apache.org>

* Async requesters to populate request URI authority based on the target host when not explicitly set by the caller.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Async requesters to support custom / resolved target endpoints
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Replace 'synchronized' blocks with ReentrantLock. (#412)
  Contributed by Arturo Bernal <abernal at apache.org>

* HTTPCORE-744: Removed references to URI normalization from URIBuilder.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Use Timeout#INFINITE instead of Timeout#DISABLED for network operations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Add support for Internationalized Domain Names (IDN).
  Contributed by Arturo Bernal <abernal at apache.org>

* Added a request interceptor to generate 'Forwarded' HTTP header.
  Contributed by Arturo Bernal <abernal at apache.org>

* Use either US-ASCII or UTF-8 encoding for text where appropriate.
  Contributed by Michael Osipov <michaelo at apache.org>

* Fixed an issue with invalid scoped IPv6 addresses in InetAddressUtils.
  Contributed by Arturo Bernal <abernal at apache.org>

* Added a request interceptor to generate 'Via' HTTP header.
  Contributed by Arturo Bernal <abernal at apache.org>


Release 5.2.4
------------------

This is a maintenance release that corrects a major defect discovered since release 5.2.3 that
can lead to an H2 connection failing at runtime with the message "Frame size exceeds maximum" when
executing requests with an enclosed message body and the remote endpoint having negotiated
a maximum frame size larger than the protocol default (16KB).


Change Log
-------------------

* HTTPCORE-762: H2 protocol handler incorrectly determines the maximum frame size for outgoing frames
  in case the remote endpoint negotiated a max frame size larger than the protocol default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.2.3
------------------

This is a maintenance release that corrects several defects discovered since release 5.2.2 including
a major defect that can cause non-blocking character-based consumers to enter an invalid state and
stop processing incoming data.


Change Log
-------------------

* HTTPCORE-757: AbstractCharDataConsumer fails to correctly handle incomplete UTF8 encoded data split
  across multiple data packets.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Support SOCKS5 with username/password authentication
  Contributed by yndu13 <yndu13 at gmail.com>

* Non-blocking protocol handler to filter out non-printable ASCII and non-ASCII characters
  from HTTP headers by default. This makes the behavior of the non-blocking transport consistent
  with that of the blocking one (#416).
  Contributed by vismayku <142537063+vismayku at users.noreply.github.com>

* HTTPCORE-754: StrictConnPool fails to correctly handle infinite request timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-753: Fixed race condition in the IOSession#close method.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.2.2
------------------

This is a maintenance release that corrects several defects discovered since release 5.2.1 including
a major defect that can cause HTTP/2 connections allocate excessive amount of memory for their output
frame buffer if the opposite endpoint transmits a high value of MAX_FRAME_SIZE in its settings.


Change Log
-------------------

* HTTPCORE-752: I/O reactor fails to initialize socket timeout for TLS connections correctly resulting
  in infinite (no timeout) by default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-751: H2 protocol handler always resizes the output frame buffer to the remove
  MAX_FRAME_SIZE instead of doing so only then the remote MAX_FRAME_SIZE is lesser than
  the current MAX_FRAME_SIZE (partially reverts HTTPCORE-707).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-750: Fixed a defect causing AbstractIOSessionPool to create multiple connections under
  high load at initialization time due to a race condition.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Handle UnsupportedOperationException in getApplicationProtocol.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* HTTPCORE-742: BasicHttpRequest#setUri does not correctly reset internal state.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-733: BasicAsyncEntityProducer sends an extra trailing 0 with UTF-8 encoded content
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Do not duplicate the HttpMessage instance variable slot in subclasses of AbstractMessageWrapper.
  Contributed by Gary Gregory <ggregory at apache.org>


Release 5.2.1
------------------

This is a maintenance release that corrects several minor defects discovered since release 5.2
and fixes SOCKS proxy protocol support in the async transport.


Change Log
-------------------

* HTTPCLIENT-2248: Fixed broken TLS over SOCKS.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* I/O reactor connect process redesign.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* SOCKS protocol handling: Delegate resolution of unknown hostnames to the SOCKS proxy.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* I/O reactor to validate remote endpoint address at the last moment immediately before connecting.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: I/O reactor must handle all runtime exceptions when connecting to remote endpoints.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added org.apache.hc.core5.http.protocol.HttpCoreContext#toString().
  Contributed by Gary Gregory <ggregory at apache.org>

* Examples should log exceptions instead of swallowing them.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-729: NPE in ServerHttp1IOEventHandlerFactory due to a missing null check
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.2
------------------

This is the first GA release in the 5.2 release series. This release finalizes the 5.2 APIs
and also corrects a number of defects discovered since the previous release.

Please note that 5.2 upgrades the minimal JRE level to version 8 (8u251 is required).

Notable changes and features included in the 5.2 series:

* Upgrade to Java 8.

* Improved support for TLS upgrade and HTTP protocol upgrade (async).

* Improved HTTP protocol negotiation.

* Improved customization of connection listeners (async).

* Improved parsing and formatting of URI components.

* Use of Java 8 date / time APIs


Change Log
-------------------

* Bug fix: HTTP/1.1 protocol handler must continue message processing as long as there is data
  in the session input buffer.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-726: Improved capacity management in SharedInputBuffer.
  Contributed by John Leacox <johnlcox at gmail.com>

* Bug fix: Fixed incorrect calculation of the capacity increment in StringAsyncEntityConsumer.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Add and use TLS accessor methods to use lambdas from httpclient5 later.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Deprecate org.apache.hc.core5.util.LangUtils.equals(Object, Object) in
  favor or java.util.Objects.equals(Object, Object).
  Deprecate org.apache.hc.core5.util.LangUtils.equals(Object[], Object[])
  in favor or java.util.Arrays.equals(Object[], Object[]).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* URI Builder performance optimization (#355)
  Contributed by jkmcl <jkmcl at users.noreply.github.com>


Release 5.2 BETA2
------------------

This BETA release corrects a major regression in the TLS handshake handling
code introduced in the previous BETA release.

This release also includes all fixes from the 5.1 (stable) branch.

Please note that 5.2 upgrades the minimal JRE level to version 8 (8u251 is required).


Change Log
-------------------

* HTTPCORE-713: Optimize InetAddressUtils#isIPv6*Address; check input colon count
  before performing IPv6 regex validation.
  Contributed by David Schlosnagle <davids at palantir.com>

* HTTPCORE-710: In case of some TLS handshake failures (protocol version mismatch)
  the local TLS engine quietly closes the stream instead of throwing a handshake
  exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Corrected TLS upgrade support in HttpAsyncRequester.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Non-blocking TLS sessions fail to update their event interest mask upon TLS
  handshake initiation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Upgrade to RxJava3
  Contributed by Ryan Schmitt <rschmitt at apache.org>


Release 5.2 BETA1
------------------

This is the first BETA release in the 5.2 release series that marks the completion of
major API changes and starts the transition toward a GA phase.

This release also includes all fixes from the 5.1 (stable) branch.


Change Log
-------------------

* Improved HTTP protocol negotiation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added #clone to BasicHeader.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* Use subclass of ConnectionClosedException to signal request execution failures due
  to the connection being closed. Requests failed with this exception should generally
  be safe to re-execute.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-698: Migratation to Unit 5.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* HTTPCORE-697: Replaced SimpleDateFormat with Java 8 Time APIs.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* Fixed #format in Deadline; improved #hashCode; replaced SimpleDatteFormat with
  Java 8 Time APIs.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Singleton INSTANCE added to RequestConnControl, RequestContent, RequestData, RequestTargetHost
  and RequestUserAgent.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* HTTPCORE-692: added new rules for H2 header check as per rfc7540 section 8.1.2.2 and 8.1.2.3.
  Contributed by é£Žčµ· <chengtao.yct at alibaba-inc.com>

* HTTPCORE-691: HttpService and HttpRequestExecutor builders.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* Added URIAuthority and NamedEndpoint setters to URIBuilder (#308).
  Contributed by Gary Gregory <garydgregory at gmail.com>



Release 5.2 ALPHA2
------------------

This is the second ALPHA release in the 5.2 release series that fixes a regression
in the TLS layer introduced by the previous ALPHA and adds a number of incremental
improvements.


Change Log
-------------------

* Add PathEntityProducer, an NIO entity provider (#302).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Add SSLContextBuilder NIO Path versions of IO File APIs and re-implement
  internals with NIO (#301).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Allow setting parameters to null arrays and lists to behave like empty (#300).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Bug fix, regression: TLS handshake result callback does not get called
  in case of a timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-2174: URUBuilder to return a new empty list instead of unmodifiable
  Collections#emptyList.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.2 ALPHA1
------------------

This is the first ALPHA release in the 5.2 release series that upgrades minimal JRE
level to version 1.8 (8u251 is required) and includes several protocol level and
API improvements. It also includes all bug fixes from the 5.1 branch.


Change Log
-------------------

* Improved Travis CI build Performance.
  Contributed by Chen Zhang <340355960 at qq.com>

* HTTPCORE-682: Custom provider for key manager/trust manager initialization (#296)
  Contributed by Pawel Veselov <pawel.veselov at gmail.com>

* Bug fix: fix data race in StrictConnPool.
  Contributed by Carter Kozak <ckozak at apache.org>

* Added utility method to add name value pair for uri builder (#288).
  Contributed by Anurag Agarwal <anurag.agarwal561994 at gmail.com>

* Use jep244 (ALPN support) back-ported to java 8u251.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Don't change conn flow control window based on remote SETTINGS.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* HTTPCLIENT-1916: Add URIBuilder.removeParameter (#283).
  Contributed by Peter Dettman <peter.dettman at bouncycastle.org>

* Improved parsing and formatting of URI components.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Let TimeValue/Timeout convert to and from Duration (#263).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Add URIBuilder#getFirstQueryParam(String) to query a parameter by name (#264).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Protocol upgrade APIs redesign.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* TLS upgrade and TLS strategy APIs redesign.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added default `ConnectionAcceptor#listen` method that takes an optional attachment
  as a parameter.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Upgrade to Java 1.8.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.1.1
------------------

This is a maintenance release that corrects a number of defects discovered since release 5.1
including a major defect that can cause a connection pool resource leak.


Change Log
-------------------

* HTTPCORE-676: Fixed incorrect handling of TLS renegotiation by non-blocking i/o sessions.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-616: Make URI authority parsing IPv6 ready.
  Contributed by Carter Kozak <ckozak at apache.org>

* Improved parsing and formatting of URI components.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-673: Fixed incorrect handling of unknown parameters in HTTP/2 SETTINGS frame.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-671: URIBuilder does not precent-encode bracketed IPv6 addresses.
  Contributed by Carter Kozak <ckozak at apache.org>

* HTTPCORE-672: H2ConnPool incorrectly handles validation of closed sessions.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed race condition when a connection request completes successfully and times out
  at the same time causing a pool entry leak.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed TextUtils#toHexString producing incorrect result for negative values.
  Contributed by Marcono1234 <Marcono1234 at users.noreply.github.com>


Release 5.1
-----------

This is the first GA release in the 5.1 release series.

Notable changes and features included in the 5.1 series:

* Conditional conformance with RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax).

* Improved support for out of sequence response message handing by the the classic (blocking)
  HTTP transport.

* Improved message builders.


Change Log
-------------------

* Bug fix: HTTP negotiator factories to accept null TlsStrategy.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RequestHandlerRegistry to resolve 127.0.0.1 as primary host.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-667, HTTPCORE-668, HTTPCORE-670: Added content type and HTTP header constants.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* RFC 3986 conformance: BasicHttpRequest to reject requests whose path component begins with
  multiple slashes.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 3986 conformance: BasicHttpRequest to support parsing of valid URI authority components
  not recognized by java.net.URI.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved message builder support.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-666, regression: fixed NPE in ServerHttp1IOEventHandlerFactory.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.1 BETA3
------------------

This is likely the last BETA release in the 5.1 release series. The next release is
expected to be 5.1 GA. This beta includes a number of new features as well as
bug fixes from the stable 5.0.x branch.

Notable changes and features included in the 5.1 series:

* Conditional conformance with RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax).

* Improved support for out of sequence response message handing by the the classic (blocking)
  HTTP transport.


Change Log
-------------------

* RFC 3986 conformance: Added `#normalizeSyntax` method to URIBuilder.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-663: Added http status code 425.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* HTTPCORE-661: Added http status code 426.
  Contributed by Arturo Bernal <arturobernalg at gmail.com>

* HTTPCORE-659: Fixed race condition in IOSessionImpl when setting event.
  Contributed by Nicolas Capponi <nicolas.capponi at forgerock.com>

* HTTPCORE-658: Removed explicit inbound / outbound socket shutdown from
  the `#close` method of classic HTTP connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-657: Added TrafficClass to IOReactorConfig (#243).
  Contributed by Desmond Yeung <dyeung at datto.com>

* Add filters before MAIN_HANDLER so they won't be ignored (#236).
  Contributed by Rob Spoor <robtimus at users.noreply.github.com>

* Bug fix: Fixed broken result callback in ProtocolNegotiatorBase.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed NPE and improve code centralization in URIBuilder (#235).
  Contributed by Lars Helge Ƙverland <lars at dhis2.org>

* Added `#appendPath` and `#appendPathSegments` methods to URIBuilder (#234).
  Contributed by Lars Helge Ƙverland <lars at dhis2.org>

* Removed connection acceptor API changes (moved to 5.2).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Removed protocol upgrade API changes (moved to 5.2).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Do not attempt to shut down non-blocking TLS session gracefully
  in case the TLS handshake has not been fully completed.
  Contributed by Oleg Kalnichevski <olegk@apache.org>


Release 5.1 BETA2
------------------

This is the second BETA release in the 5.1 release series that includes a number of
new features as well as bug fixes from the stable 5.0.x branch.

Change Log
-------------------

* PR #232: Master try w res and more.
  - Use try-with-resources.
  - Use diamonds.
  - Add missing @Override.
  - Make better use of Map APIs.
  - Remove redundant modifiers.
  - Use Collections.addAll() API instead of loops.
  - Remote extra semicolons (;).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Bug fix: Fixed ignoring maxResultLength in toString method of EntityUtils.
  Contributed by Klaw <Klawrar at gmail.com>

* Bug fix: corrected handling of pushed stream refusal by the HTTP/2 protocol handler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved connection re-use (keep-alive) tracking by the benchmark; disabled H2 push
  when running the benchmark with HTTP/2.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved detection of disconnected endpoints by HttpAsyncRequester.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-626: in case of an unsuccessful `expect-continue` handshake do not make any
  attempts to keep the client connection in a consistent state if the server intends
  to close it on its end.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Move decision if the i/o session is to be terminated immediately to the protocol
  handler by default attempt to terminate the i/o session gracefully.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Optimized request termination by the non-blocking HTTP/1.1 protocol handler in case of
  a premature response or `expect-continue` handshake failure.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* `AbstractAsyncResponseConsumer` to handle gracefully an inconsistent state caused by
  the caller signalling a response with no entity but subsequently calling methods
  to consume data.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Revised HTTP protocol negotiation for non-blocking I/O sessions
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Revised TLS session initialization in I/O reactor code
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-653: CancelledKeyException triggers I/O reactor shutdown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Make `ReactiveDataConsumer#failed` a no-op if it has already been marked as complete
  (#227).
  Contributed by Colin Weld <c_weld at backblaze.com>

* HTTPCORE-644: non-blocking TLSv1.3 connections can end up in an infinite event spin
  when closed concurrently by the local and the remote endpoints.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Calculate pendingOutputRequests before calling produceOutput to avoid race condition.
  Contributed by Colin Weld <c_weld at backblaze.com>


Release 5.1 BETA1
------------------

This is the first BETA release in the 5.1 release series that includes a number of
new features as well performance optimizations in the classic HTTP transport.

Notable changes and features included in the 5.1 series:

* Conditional conformance with RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax).

* Improved support for out of sequence response message handing by the the classic (blocking)
  HTTP transport.


Change Log
-------------------

* HTTPCORE-649: Implement ByteArrayBuffer.append(ByteBuffer)
  Contributed by Carter Kozak <ckozak at apache.org>

* Use decimal numbers for endpoint/execution IDs
  Contributed by Michael Osipov <michaelo at apache.org>

* HTTPCORE-645: Increase blocking default chunk size from 2 KiB to 8 KiB.
  Contributed by Carter Kozak <ckozak at apache.org>

* HTTPCORE-645: Chunked request streams reuse buffers between requests.
  Contributed by Carter Kozak <ckozak at apache.org>

* HTTPCORE-639: Add a configurable ResponseOutOfOrder strategy for DefaultBHttpClientConnection.
  Contributed by Carter Kozak <ckozak at apache.org>

* RFC 3986 conformance: Support percent-encoded reserved characters in the host component.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 3986 conformance: Revised URI parsing and formatting.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Better parse and format methods for URIAuthority.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-628: Do not encode blanks as + in URI query component.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Async connection listeners to support passing attachments to endpoints.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.0.2
------------------

This release reverts changes to early response handling logic introduced in 5.0.1
and fixes a number of minor defects. Improvement of the early response handling
by the classic client protocol handler has been moved to 5.1.

Please also note that as of this release HttpCore will use a 3 minute socket timeout
by default.

Change Log
-------------------

* HTTP/1.1 protocol handlers fail to consistently set actual protocol version in
  the execution context.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-648: Buffer array access respects the arrayOffset (#220).
  Contributed by Carter Kozak <ckozak at ckozak.net>

* HTTPCORE-646: ChunkedInputStream avoids creating unnecessary buffers.
  Contributed by Carter Kozak <ckozak at ckozak.net>

* Revert "Improved handling of early response messages by the classic client protocol handler".
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-638: SharedOutputBuffer must trigger DataStreamChannel#endStream() once (#204).
  Contributed by malaysf <malayshah at gmail.com>

* Fixed integer overflow in IOWorkers selector (#203).
  Contributed by Pavel kaplin <pavel.kaplin@gmail.com>

* HTTPCLIENT-2098: EntityUtils#toByteArray method fails to take into account
  `maxResultLength` parameter (#202).
  Contributed by Andriy <a.mahats at gmail.com>

* Add Automatic-Module-Name to the manifest.
  Contributed by Niels Basjes <niels at basjes.nl>

* HTTPCORE-636: Logging statements use slf4j interpolation over concatenation (#199).
  Contributed by Carter Kozak <ckozak at ckozak.net>

* HTTPCLIENT-2091: Use finite (3 minutes) socket timeout by default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.0.1
------------------

This release improves handling of early response messages by the classic client protocol handler
and fixes a number of minor defects.

Change Log
-------------------

* Add handling of early response messages by the classic client protocol handler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-631: Revised i/o reactor shutdown sequence and resource de-allocation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fix CharArrayBuffer.subSequence(beganIndex,endIndex) to return right result.
  Contributed by Lee Ray <liruigo at gmail.com>

* Added exception callback to async server implementations enabling logging of unexpected and
  fatal exceptions in the server-side protocol handlers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.0
------------------

This is the first stable (GA) release of HttpCore 5.0.

Notable changes and features included in the 5.0 series:

* Support for HTTP/2 protocol and conformance to requirements and recommendations
  of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** application-layer protocol negotiation (ALPN) on Java 9+
    ** TLS 1.2 security features

   Features out of scope for 5.0 release:

    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Redesigned I/O reactor APIs and improved NIO based reactor implementation for a greater
  performance and scalability.

* Support for server-side request filters for classic and asynchronous server implementations.
  Request filters could be used to implement cross-cutting protocol aspects such
  as the 'expect-continue' handshaking and user authentication / authorization.

* Support for Reactive Streams API [http://www.reactive-streams.org/]

* Redesigned connection pool implementation with strict connection limit guarantees.
  The connection pool is expected to have a better performance under higher concurrency
  due to reduced global pool lock contention.

* New connection pool implementation with lax connection limit guarantees and better
  performance under higher concurrency due to absence of a global pool lock.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.


Change Log
-------------------

* GitHub #183: IO reactor status equality clean ups.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* HTTPCORE-623 GitHub #185: Change org.apache.hc.core5.http.io.BHttpConnection.isDataAvailable() int input to Timeout.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* GitHub #188: Add PathEntity, a Path based implementation of HttpEntity. (#188)
  Contributed by Gary Gregory <garydgregory at gmail.com>
  
* GitHub #191: Add org.apache.hc.core5.http.Method.normalizedValueOf(String).
  Contributed by Gary Gregory <garydgregory at gmail.com>

* GitHub #193: Reuse constants instead of magic strings.
  Contributed by Gary Gregory <garydgregory at gmail.com>


Release 5.0-BETA11
------------------

This BETA improves handling of illegal or invalid requests on the server-side and fixes a number
of defects in HTTP/2 protocol code found since the last release.

IMPORTANT: This release is expected to be the last BETA version. If no major
design flaws are found, the actual 5.0 API will be frozen and the next version will be
promoted to GA.


Change Log
-------------------

* HTTPCORE-618: org.apache.hc.core5.http.HttpStatus should be a class, not an interface.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* HTTPCORE-619: org.apache.hc.core5.reactor.EventMask should be a class, not an interface.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Normalize TimeUnit in TimeValue's #equals() and #hashCode().
  Contributed by Michael Osipov <michaelo at apache.org>

* Support for status code 431 (Request Header Fields Too Large) by H2 server-side protocol handler
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Enforce H2 SETTINGS_MAX_HEADER_LIST_SIZE limit for HTTP/2 messages.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved H2 connection window management logic.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Use UTF-8 encoding for XML-based content types.
  Contributed by Michael Osipov <michaelo at apache.org>

* Bug-fix: H2 protocol handler to reset all streams unconditionally in case of an unexpected
  exception and attempt to close the i/o session gracefully if possible.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Support for status code 431 (Request Header Fields Too Large).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Corrected handling of illegal or invalid request heads by async server-side protocol handler
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug-fix: Fixed race condition in ReactiveDataConsumer.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Bug-fix: Fixed H2 SETTINGS_HEADER_TABLE_SIZE negotiation.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Bug-fix: Fixed empty response handling in ReactiveResponseConsumer.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Allow for timeout while acquiring lock in StrictConnPool.
  Contributed by Chris Wildman <chriswildman at chriswildman.com>

* Added H2 config option to disable Huffman compression
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-613: Now allowing 0 for validaterAfterInactivity.
  Contributed by Peter Frank <IMATOOL13 at gmail.com>

* HTTPCLIENT-2029: URIBuilder to support parsing of non-UTF8 URIs.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-2026: Fixed URIBuilder#isOpaque() logic.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-611: Minor glitches with TimeValue.
  Contributed by Gary Gregory <garydgregory at gmail.com>



Release 5.0-BETA10
-------------------

This BETA fixes a number of defects found since the last release.

IMPORTANT: This release is expected to be the last BETA version. If no major
design flaws are found, the actual 5.0 API will be frozen and the next version will be
promoted to GA.


Change Log
-------------------

* HTTPCORE-608: Fixes regression that can lead to performance degradation of
  asynchronous HTTP/1.1 protocol handlers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-606: HTTP/2 protocol handler incorrectly uses larger frame size prior
  to SETTING handshake completion; revision of SETTINGS handshake implementation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: HTTP/2 Protocol handler does not update global connection output window
  in some cases.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Upgraded Conscrypt dependency to version 2.2.1
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.0-BETA9
-------------------

This BETA fixes a number of defects found since the last release, improves behavior
of the lax (concurrent) connection pools (special thanks to Linton Miller), simplifies
and improves input event handling of SSL/TLS sessions and the HTTP/1.1 protocol event
handler.

Please note that the following interfaces have marked as internal as of this release:
IOSession, IOEventHandler, IOEventHandlerFactory.

IMPORTANT: This release is expected to be the last BETA version. If no major
design flaws are found, the actual 5.0 API will be frozen and the next version will be
promoted to GA.


Change Log
-------------------

* HTTPCORE-604: async HTTP/1.1 protocol handler must close the i/o session if it cannot 
  be kept alive before passing control to the message exchange hanlder.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Simplification of HTTP/1.1 read event handling logic.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Redesign of SSL/TLS async I/O event handling.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-2016 (regression): Tab chars are replaced by question marks in header values.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Fixed capacity calculation in SessionInputBufferImpl#put.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Marked IOSession, IOEventHandler and IOEventHandlerFactory interfaces as internal.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Propagate BasicResponse{Consumer,Producer}#failed() to data{Consumer,Producer}.
  Contributed by Roy Hashimoto <roy at shoestringresearch.com>

* Regression: Fixed regression in SingleCoreIOReactor leading to unhandled CancelledKeyException
  and causing abnormal I/O reactor termination.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-601: Work-around for SSL session spin on outbound session closure with Conscrypt 2.2.1.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-600: SSLIOSession incorrectly disables input interest when there is still decrypted data
  available in the session input buffer.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added statusClass property to StatusLine.
  Contributed by Behrang <18451+behrangsa at users.noreply.github.com>

* HTTPCORE-596: Connection pools to use an optional callback to close out disposed connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Connection pools to close connections gracefully in case of an ordinary connection disposal.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-599: I/O sessions to stop reading from the underlying network channel of READ interest
  is disabled.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* TimeValue to implement Comparable.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-597: AsyncEntityProducers#createText always throws IllegalArgumentException.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-595: Tolerate NPE thrown by com.android.org.conscrypt.NativeCrypto#SSL_get_shutdown
  in Android Conscrypt.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Set accessibility flag on reflected methods in ReflectionUtils.
  Contributed by Richard Hernandez <riher at amazon.com>

* Restore original socket timeout after finishing SSL/TLS handshake.
  Contributed by Richard Hernandez <riher at amazon.com>

* Add SOAP XML content type.
  Contributed by Raihaan Shouhell <raihaanhimself at gmail.com>

* HTTPCORE-593, HTTPCORE-592, HTTPCORE-590, HTTPCORE-589: LaxConnPool improvements.
  Contributed by Linton Miller <linton.miller at coxautoinc.com>

* HTTPCORE-588: Race condition in ComplexCancellable that can lead to operational dependency
  not being correctly cancelled.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Execute Socket[Channel]#connect under doPrivileged.
  Contributed by Simon Willnauer <simonw at apache.org>

* Fail request execution immediately after submission if the I/O session has already been closed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Fixed regression in the HTTP protocol negotiators.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: MessageSupport#formatTokens no longer modifies the array of tokens passed to it
  as a parameter.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-586: Improve LaxConnPool max pool size management.
  Contributed by Linton Miller <linton.miller at coxautoinc.com>

* HTTPCORE-585: Fix LaxConnPool#servicePendingRequest to avoid losing pending lease requests
  it can't fulfill.
  Contributed by Linton Miller <linton.miller at coxautoinc.com>

* Possible fix for iteration thread-safety issue.
  Contributed by Linton Miller <linton.miller at coxautoinc.com>

* SSL session verifier for classic HTTP requester.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: non-blocking I/O event handler may be null in case of an unexpected exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Corrected immediate termination of non-blocking I/O sessions.
Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: Ensure consistency of internal buffers in case of I/O or SSL exception.
Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 5.0-BETA8
-------------------

This BETA fixes a number of defects found since the last release and adds several
convenience factory and builder classes, mainly for TLS configuration and HTTP
message construction.

As of this version all server and requester implementations exclude weak TLS protocol
versions and ciphers.

Please note that the following interfaces have changed: ResponseChannel,
AsyncRequestConsumer, AsyncResponseConsumer, HttpContentProducer, SSLServerSetupHandler.

IMPORTANT: This release is expected to be the last BETA version. If no major
design flaws are found the actual 5.0 API will be frozen and the next version will be
promoted to GA.


Change Log
-------------------

* HTTPCORE-582: Fixed NPE in SingleCoreIOReactor#processEvents
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Redesign of fatal exception handling by the I/O reactors
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-581: Wrong deadline calculation for non-blocking I/O operations
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Better HttpVersion and ProtocolVersion. (#131)
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Classic and async message builders.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved classic and async entity factory methods.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-578: Incorrect serialization of HeaderGroup.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* HTTPCORE-577: server-side HTTP protocol negotiator to propagate exceptions
  to the I/O event handler associated with the I/O session.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1986: URIBuilder#isPathEmpty method to verify if encodedPath
  is an empty string.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* SSLIOSession: Improve connectTimeout implementation.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* HTTPCLIENT-1981: Disallow TRACE requests with an enclosed entity.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1978: Filter characters before byte conversion.
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* HTTPCORE-573: FileContentDecoder don't always enforce the maximum number of
  bytes to transfer.
  Contributed by Julien Coloos <julien.coloos at gmail.com>

* All server and requester implementation to exclude weak TLS protocol versions
  and ciphers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved SSL setup handling for classic requester and server.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Common TLS support methods migrated from HttpClient.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: non-blocking SSL I/O sessions fail to fire session disconnected event.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: basic entity consumers to clear buffered content when releasing resources.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* conscrypt-openjdk-uber 1.4.1 -> 1.4.2.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Provide more information when a BindException occurs.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* Refactor ClassicHttpRequest and ClassicHttpResponse interfaces to extend
  a new interface HttpEntityContainer.
  Contributed by Gary Gregory <garydgregory at gmail.com>
  
* Update RxJava from 2.2.7 to 2.2.8.
  Contributed by Gary Gregory <garydgregory at gmail.com>


Release 5.0-BETA7
-------------------

This BETA release adds support for SOCKS version 5, improves support for TLS
handshake timeout configuration, improves URI builder, and fixes various defects.

Please note that the following interfaces have changed: TlsStrategy, IOSession,
TransportSecurityLayer.


Change Log
-------------------

* Add a thread-safe capacity channel to AbstractHttp1StreamDuplexer
  Contributed by Richard Hernandez <riher at amazon.com>

* HTTPCORE-568: Signal capacity in ReactiveDataConsumer whenever possible (fixes a race condition)
  Contributed by Richard Hernandez <riher at amazon.com>

* Made standard HttpEntity implementations immutable / conditionally immutable
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1968: URIBuilder to split path component into path segments when digesting a URI
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1968: added utility methods to parse and format URI path segments
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added SOCKS proxy support to classic (blocking) HTTP requester
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Made AbstractBinAsyncEntityProducer and AbstractCharAsyncEntityProducer conditionally threading-safe
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added convenience method to test if ContentType instances are of the same MIME type
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Merge connect and handshake timeouts in AbstractIOSessionPool
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* HTTPCLIENT-1960: URIBuilder incorrect handling of multiple leading slashes in path component
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1959: corrected argument validation in HttpHost constructors; removed deprecated methods
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* org.apache.hc.core5.reactor.IOSession: Deprecate lock() in favor of getLock(). Add missing @Override.
  Contributed by Gary Gregory <garydgregory at gmail.com>

* HTTPCORE-563: client support for SOCKS version 5
  Contributed by David Maplesden <david at maplesden.co.nz>

* Delay I/O operations on non-blocking SSL sessions until fully initialized
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Add `handshakeTimeout` support throughout
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Updated the set of project report generated by Maven
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* SSLIOSession: Add `connectTimeout` constructor param
  Contributed by Ryan Schmitt <rschmitt at apache.org>

* Update RxJava from 2.1.9 to 2.2.7.
  Contributed by Gary Gregory <garydgregory at gmail.com>


Release 5.0-BETA6
-------------------

This BETA release adds support for advanced TLS functions (such as ALPN protocol negotiation)
on Java 1.7 and Java 1.8 through Conscrypt TLS library, and fixes a number of defects found
since the previous release.

Please note AsyncDataConsumer interface has been changed in order to make it simpler to implement.
However existing AsyncDataConsumer might require minor modifications.


Change Log
-------------------

* Removed OSGi module.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added support for advanced TLS functions (such as ALPN extension) on Java 1.7 and Java 1.8
  through Conscrypt TLS library.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTP/1.1 and HTTP/2 async protocol handlers to use I/O session lock for output synchronization.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: non-blocking HTTP/1.1 server-side streams incorrectly report their keep-alive status.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: fixed a race condition in non-blocking HTTP/1.1 protocol handlers causing premature
  clearing of output interest.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Simplified AsyncDataConsumer interface contract
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-560: Fix LaxConnPool leasing incorrect PoolEntry when processing pending requests
  Contributed by Desmond Yeung <dyeung at datto.com>

* Deprecate and rename org.apache.hc.core5.util.Timeout.ofMillis(long) to ofMilliseconds(long).
  Contributed by Gary Gregory <ggregory at apache.org>

* Deprecate and rename org.apache.hc.core5.util.TimeValue.ofMillis(long) to ofMilliseconds(long).
  Contributed by Gary Gregory <ggregory at apache.org>

* Fix org.apache.hc.core5.util.TimeValue.convert(TimeUnit).
  Contributed by Gary Gregory <ggregory at apache.org>

* Add org.apache.hc.core5.util.TimeValue.divide(*).
  Contributed by Gary Gregory <ggregory at apache.org>
  
* org.apache.hc.core5.http.URIScheme.getId()
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-562: The reason phrase returned by org.apache.hc.core5.http.HttpResponse.getReasonPhrase()
  may be empty.
  Contributed by Gary Gregory <ggregory at apache.org>

* TimeValue can parse more leniently: Allow spaces and singular words for time units,
  for example " 1 SECOND ".
  Contributed by Gary Gregory <ggregory at apache.org>
  
* Add HttpStreamResetException.serialVersionUID 
  Contributed by Gary Gregory <ggregory at apache.org>
  
* Add org.apache.hc.core5.http.HttpRequest.setUri(URI)
  Contributed by Gary Gregory <ggregory at apache.org>

* org.apache.hc.core5.net.URIBuilder.setHttpHost(HttpHost)
  Contributed by Gary Gregory <ggregory at apache.org>

* Deprecate constructors in org.apache.hc.core5.http.HttpHost that do not have the scheme argument
  first in favor of new constructors that do.
  Contributed by Gary Gregory <ggregory at apache.org>

* Add org.apache.hc.core5.http.HttpHost.create(URI)
  Contributed by Gary Gregory <ggregory at apache.org>

* Keep the entries in org.apache.hc.core5.http.protocol.UriPatternMatcher#map in insertion order.
  Contributed by Gary Gregory <ggregory at apache.org>


Release 5.0-BETA5
-------------------

This BETA release fixed a severe regression introduced in 5.0-BETA4.


Release 5.0-BETA4
-------------------

This BETA release adds support for Reactive Streams API [http://www.reactive-streams.org/] and
fixes compatibility issues with Java 11 new TLS engine as well as a number of defects found
since the previous release.

This release also includes a redesigned HTTP stress test tool loosely based on
Apache Benchmark (AB) command interface with support for HTTP/2.


Change Log
-------------------

* Resolved compatibility issues with TLS 1.3 engine shipped with Java 11
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: corrected handling of FORCE_HTTP2 version policy by the server-side protocol negotiator
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Redesign of the internal HTTP benchmark loosely based on AB, added support for HTTP/2
  stress testing.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Regression: fixed the response connection control interceptor incorrectly using
  'Connection: keep-alive' directive with HTTP/1.0 requests that do not have
  an explicit 'Connection' request header.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-552, HTTPCORE-553, HTTPCORE-554, HTTPCORE-555, HTTPCORE-556, HTTPCORE-557, HTTPCORE-558:
  added status codes 103, 208, 226, 308, 451, 506, 508, 510
  Contributed by sparsick <sparsic at @web.de> and Georg Berky <georg.berky at posteo.de>

* HTTPCLIENT-1942: Add support for Reactive Streams
  Contributed by Ryan Schmitt <ryansch at amazon.com>

* Respect CloseMode when closing async TCP sockets
  Contributed by Ryan Schmitt <ryansch at amazon.com>

* Fix typo in message generated by org.apache.hc.core5.io.SocketTimeoutExceptionFactory.toMessage(int).
  Contributed by Gary Gregory <ggregory at apache.org>

* Update the org.apache.hc.core5.http.protocol.HttpContext.setAttribute(String, Object) API to return the previous value.
  Contributed by Gary Gregory <ggregory at apache.org>

* Deprecate and rename org.apache.hc.core5.http.EndpointDetails.getSocketTimeout() to getSocketTimeoutMillis().
  Contributed by Gary Gregory <ggregory at apache.org>
  
* Deprecate and rename org.apache.hc.core5.http.MessageHeaders.getAllHeaders() to getHeaders(). 
  Contributed by Gary Gregory <ggregory at apache.org>

* Deprecate and rename org.apache.hc.core5.http.MessageHeaders.getSingleHeaders(String) to getHeader(String). 
  Contributed by Gary Gregory <ggregory at apache.org>


Release 5.0-BETA3
-------------------

This BETA release fixes a number of defects found since the previous release, adds several
incremental improvements and improves Javadoc documentation.

Change Log
-------------------

* Improved information responses (1xx) processing.
  Contributed by Kirill Usov <kirill.usov at gmail.com>

* Bug fix: fixed AbstractAsyncResponseConsumer to handle null callback parameter
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: HTTP stream handlers no longer call #failed event of the associated exchange handler when
  the message exchange has already been completed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: fixed NPE caused by null timeout attribute of IOSessionRequest
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: fixed incorrect propagation of exception cause in case of an HTTP protocol violation during
  HTTP protocol version negotiation
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Workaround for misbehaved servers that return HTTP 204 responses with a content
  Contributed by Alessandro Gherardi <alessandro.gherardi at schneider-electric.com>

* HTTPCORE-510: Avoid an ArithmeticException in AbstractMultiworkerIOReactor by failing earlier by checking
  ioThreadCount in IOReactorConfig constructor.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-511: Do not cache result of Runtime.getRuntime().availableProcessors() in IOReactorConfig.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-509: AVAIL_PROCS is auto-configured based on core count.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-514: Exceptions defined by HttpCore should clean message strings when built to replace non-printable
  characters with hex values.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-517: Allow SecurityManager to stop socket connections.
  Contributed by Gary Gregory <ggregory at apache.org> and Paul Thompson <pathompson at atlassian dot com>
  
* HTTPCORE-537: org.apache.hc.core5.http.message.BasicHttpResponse.toString() prints its code twice and
  no protocol version.
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-539: Constructing a new FileEntityProducer for a file whose length is greater than 2GB throws
  an IllegalArgumentException.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-540: EndpointDetails implements HttpConnectionMetrics.
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-541: Add HttpVersion.ALL for all HTTP versions known to HttpCore.  
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-542: Add missing org.apache.hc.core5.http.message.BasicClassicHttpRequest.serialVersionUID
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-544: Add org.apache.hc.core5.http.EndpointDetails.getSocketTimeout()
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-545: Add org.apache.hc.core5.http.message.HeaderGroup.removeHeaders(Header)
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-546: Update org.apache.hc.core5.http.message.HeaderGroup.removeHeader(Header) to return a boolean  
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-547: Update org.apache.hc.core5.http.message.HeaderGroup.removeHeaders(String) to return a boolean
  Contributed by Gary Gregory <ggregory at apache.org>
  
* HTTPCORE-548: Add missing HttpContext parameter to APIs.
  Contributed by Gary Gregory <ggregory at apache.org>
  
* Refactor duplicate messages into a new 0-arg constructor for StreamClosedException.
  Contributed by Gary Gregory <ggregory at apache.org>

* Refactor timeout APIs to include the actual timeout value.
  Contributed by Gary Gregory <ggregory at apache.org>

* Refactor timeout APIs to include the scale in the method name; for example 'int getSocketTimeout()'
  vs. int 'getSocketTimeoutMillis()'.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-550: When a ParseException is caught and rethrown as an IOException in ChunkDecoder#processFooters(),
  the IOException does not chain the original ParseException.
  Contributed by Gary Gregory <ggregory at apache.org>

* Request specific push consumers
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCLIENT-1927: URLEncodedUtils#parse breaks at double quotes when parsing unquoted values
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-528: SSL I/O session spins upon abnormal connection closure by the opposite endpoint.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.0-BETA2
-------------------

This BETA release fixes a number of defects found since the previous release and
adds several incremental improvements.

Notable changes and features included in the 5.0 series:

* Support for HTTP/2 protocol and conformance to requirements and recommendations
  of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** application-layer protocol negotiation (ALPN) on Java 9+
    ** TLS 1.2 security features

   Features out of scope for 5.0 release:

    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Redesigned I/O reactor APIs and improved NIO based reactor implementation for a greater
  performance and scalability.

* Support for server-side request filters for classic and asynchronous server implementations.
  Request filters could be used to implement cross-cutting protocol aspects such
  as the 'expect-continue' handshaking and user authentication / authorization.

* Redesigned connection pool implementation with strict connection limit guarantees.
  The connection pool is expected to have a better performance under higher concurrency
  due to reduced global pool lock contention.

* New connection pool implementation with lax connection limit guarantees and better
  performance under higher concurrency due to absence of a global pool lock.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.

The 5.0 APIs are considered feature complete and are not expected to undergo any major changes
anymore. The focus of development is now shifting to API polish, code stabilisation
and documentation improvements.


Change Log
-------------------

* HTTP/2 multiplexed requester to support cancellation of individual message exchanges without termination
  of the underlying I/O session.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: corrected handling of GOAWAY frames by HTTP/2 stream multiplexer
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: prevent a tight loop in non-blocking SSL I/O sessions due to a HTTP/2 frame fragment in the SSL
  input buffer.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: incorrect handing of premature I/O session termination by the server-side application protocol
  negotiator.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Strict / lax ALPN handshake mode for HTTP/2 multiplexing requester.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-496: Add API org.apache.http.protocol.UriPatternMatcher.entrySet().
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-499 Make interface Header extend NameValuePair
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-501 org.apache.http.client.utils.URLEncodedUtils.parse() 
  should return a new ArrayList when there are no query parameters.
  Contributed by Gary Gregory <ggregory at apache.org>


Release 5.0-BETA1
-------------------

This is a major release that renders HttpCore API incompatible with the stable 4.x branch
and upgrades HTTP/1.1 and HTTP/2 protocol conformance to the requirements and recommendations
of the latest protocol specification.

Notable new features in this release:

* New HTTP/2 requester optimized for multiplexed execution of requests.

Notable changes and features included in the 5.0 series:

* Support for HTTP/2 protocol and conformance to requirements and recommendations
  of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** application-layer protocol negotiation (ALPN) on Java 9+
    ** TLS 1.2 security features

   Features out of scope for 5.0 release:

    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Redesigned I/O reactor APIs and improved NIO based reactor implementation for a greater
  performance and scalability.

* Support for server-side request filters for classic and asynchronous server implementations.
  Request filters could be used to implement cross-cutting protocol aspects such
  as the 'expect-continue' handshaking and user authentication / authorization.

* Redesigned connection pool implementation with strict connection limit guarantees.
  The connection pool is expected to have a better performance under higher concurrency
  due to reduced global pool lock contention.

* New connection pool implementation with lax connection limit guarantees and better
  performance under higher concurrency due to absence of a global pool lock.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.

The 5.0 APIs are considered feature complete and are not expected to undergo any major changes
anymore. The focus of development is now shifting to API polish, code stabilisation
and documentation improvements.


Change Log
-------------------

* HTTP/2 multiplexing requester.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Compatibility with Java 9 (tested with Oracle JDK 9.0.1).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed handling of relative request paths in BasicHttpRequest.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-494: Add image constants to ContentType.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-486: set a time limit on processing of pending I/O events by I/O reactors.
  Contributed by xiaohu-zhang <silver9886@126.com>



Release 5.0-ALPHA4
-------------------

This is a major release that renders HttpCore API incompatible with the stable 4.x branch
and upgrades HTTP/1.1 and HTTP/2 protocol conformance to the requirements and recommendations
of the latest protocol specification.

Notable changes and features included in the 5.0 series are:

* Support for HTTP/2 protocol and conformance to requirements and recommendations
  of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** application-layer protocol negotiation (ALPN) on Java 1.9+
    ** TLS 1.2 security features

   Features out of scope for 5.0 release:

    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Redesigned I/O reactor APIs and improved NIO based reactor implementation for a greater
  performance and scalability.

* Support for server-side request filters for classic and asynchronous server implementations.
  Request filters could be used to implement cross-cutting protocol aspects such
  as the 'expect-continue' handshaking and user authentication / authorization.

* Redesigned connection pool implementation with strict connection limit guarantees.
  The connection pool is expected to have a better performance under higher concurrency
  due to reduced global pool lock contention.

* New connection pool implementation with lax connection limit guarantees and better
  performance under higher concurrency due to absence of a global pool lock.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.

Please note that at this point 5.0 APIs are considered API experimental and unstable and are
expected to change in the coming releases without providing a migration path.


Change Log
-------------------

* HTTPCORE-485: Reduced memory footprint of non-blocking SSL sessions by 25%.
  Contributed by Todor Bonchev <31352118+todorbonchev at users.noreply.github.com>

* Fixed propagation of entity details of incoming HTTP/1.1 messages by non-blocking HTTP/1.1
  stream duplexer
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Configurable connection pool concurrency policy
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-390: Connection pool implementation with higher concurrency characteristics
  and lax total and per route max guarantees.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Request filters for classic and asynchronous server-side protocol handlers
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved handling of 1xx status messages by the classic transport; server expectation
  (expect-continue) handshake can now be implemented as a cross-cutting aspect by both
  the classic and asynchronous transports
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed bug in the classic (blocking) HTTP requester causing incorrect release of connections
  in case a response message has no entity (such as 204)
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-454: use Timeout class to represent timeout values
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Made HTTP/2 data window update precede sending of the DATA frame to the opposite endpoint.
  In some extreme circumstances the opposite endpoint can send back a WINDOW_UPDATE frame
  in-between of these two operation causing the data window value to exceed its maximum
  valid value
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* I/O interest flag in IOSessionImpl requires synchronization instead of atomic operation
  in order to avoid race condition
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-472: Fixed problem with blocking message parsers incorrectly throwing
  "Maximum line length limit exceeded" exception in some corner cases
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Improved I/O reactor APIs with a smaller public API footprint
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Rewrite of I/O reactor internal channel management; more efficient handling of outgoing
  connection requests
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed delineation of 200 status message in response to CONNECT method
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-468: Allow HttpAsyncService subclasses to customize the HTTP status code.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-471: Add APIs URIBuilder.localhost() and setHost(InetAddress)
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-466: Round out the SslContextBuilder by adding missing APIs.
  Contributed by Gary Gregory <ggregory at apache.org>



Release 5.0-ALPHA3
-------------------

This is a major release that renders HttpCore API incompatible with the stable 4.x branch
and upgrades HTTP/1.1 and HTTP/2 protocol conformance to the requirements and recommendations
of the latest protocol specification.

Notable changes and features included in the 5.0 series are:

* Partial support for HTTP/2 protocol and conformance to requirements and
  recommendations of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** application-layer protocol negotiation (ALPN) on Java 1.9+
    ** TLS 1.2 security features

   Unsupported features:

    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Improved HTTP/1.1 and HTTP/2 requester and server implementations.

* Redesigned connection pool implementation with reduced pool lock contention.

* Plug-in mechanism for HTTP/1.1 protocol switch / upgrade.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.

Please note that as of 5.0 HttpCore requires Java 1.7 or newer.

Please note that at this point 5.0 APIs are considered API experimental and unstable and are
expected to change in the coming releases without providing a migration path.


Change Log
-------------------

* Support for HTTP protocol version negotiation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Support TLS ALPN and disable TLS renegotiation via reflection on Java 1.9+.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-452: Add a UriRegexMatcher.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-453: ServerBootstrap should traverse handler map in insertion order.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-451: Add a TimeValue class to wrap a long and a TimeUnit.
  Contributed by Gary Gregory <ggregory at apache.org>

* Fixed HTTP/2 server-side response message delineation when replying to HEAD requests.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Rewrite of non-blocking HTTP/1.1 connection persistence and re-use code.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* API for graceful shutdown of processes or endpoints
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-450: Add a Provider parameter in SSLContextBuilder.
  Contributed by lujianbo <387852424 at qq dot com>, Gary Gregory <ggregory at apache.org>

* Improved handling of premature HTTP/1.1 stream termination by non-blocking
  protocol handlers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Non-blocking connection initializer to support multi-homed remote endpoints.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-458: Validate port values
  Contributed by Gary Gregory <ggregory at apache.org>
  

Release 5.0-ALPHA2
-------------------

This is a major release that renders HttpCore API incompatible with the stable 4.x branch
and upgrades HTTP/1.1 and HTTP/2 protocol conformance to the requirements and recommendations
of the latest protocol specification.

Notable changes and features included in the 5.0 series are:

* Partial support for HTTP/2 protocol and partial conformance to requirements and
  recommendations of the latest HTTP/2 protocol specification (RFC 7540, RFC 7541)

  Supported features:

    ** HPACK header compression
    ** stream multiplexing (client and server)
    ** flow control
    ** response push (client and server)
    ** message trailers
    ** expect-continue handshake
    ** connection validation (ping)
    ** TLS 1.2 features

   Unsupported features:

    ** application-layer protocol negotiation (ALPN)
    ** padding of outgoing frames
    ** stream priority
    ** plain connection HTTP/1.1 upgrade
    ** CONNECT method
    ** TLS renegotiation and compression cannot be disabled with Java 1.7 JSSE APIs

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol
  specification (RFC 7230, RFC 7231)

* New asynchronous HTTP transport APIs consistent for both HTTP/1.1 and HTTP/2 transport.

* Improved HTTP/1.1 and HTTP/2 requester and server implementations.

* Redesigned connection pool implementation with reduced pool lock contention.

* Support for HTTP/1.1 protocol switch / upgrade.

* Package name space changed to 'org.apache.hc.core5'

* Maven group id changed to 'org.apache.httpcomponents.core5'

HttpCore 5.0 releases can be co-located with earlier versions.

Please note that as of 5.0 HttpCore requires Java 1.7 or newer.

Please note that at this point 5.0 APIs are considered API experimental and unstable and are
expected to change in the coming releases without providing a migration path.


Change Log
-------------------

* HTTPCORE-424: added ConnPool policy parameter to control connection re-use policy.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-413: Minimal chunk size can now be specified as H1Config#chunkSizeHint.
  The value is treated as a hint. Both classic and NIO attempt to apply it when sending / receiving
  messages without providing a strict guarantee.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-429: NIO connection pool incorrectly reports the number of pending connections
  per individual route.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-432: HTTP/2 support.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-418: Add a HttpHost constructor for hostname and scheme.
  Based on contribution by Joshua Hendrickson <joshua dot hendrickson at live dot com>
  
* HTTPCORE-436: Port tests from Apache Commons Logging to Apache Log4j 2.
  Contributed by Gary Gregory <ggregory at apache.org>

* HTTPCORE-434: Corrected handling of HEAD responses without payload headers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-427: SSL I/O sessions to use a finite timeout for SSL shutdown handshake when closing.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-422: HttpAsyncResponseConsumer#onEntityEnclosed is triggered for HEAD responses.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-420: Blocking HttpServer does not close out persistent connection when shut down.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-417: SSLIOSession#writePlain incorrectly handles closed channel condition leading
  to an infinite loop.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-416: DefaultConnectingIOReactor to treat failure to open a channel for a new outgoing
  connection as a recoverable request failure.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 5.0-ALPHA1
-------------------

This is a major release that renders HttpCore API incompatible with the stable 4.x branch
and upgrades HTTP/1.1 protocol conformance to the requirements and recommendations of the latest
protocol specification. This release lays the foundation for transition to HTTP/2 as the primary
transport protocol in the future releases.

Notable changes and features included in the 5.0 series are:

* Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol 
  specification (RFC 7230, RFC 7231)

* Blocking I/O and NIO HTTP transport implementation has been folded into one module

* Package name space changed to 'org.apache.hc.core5' 

* Maven group id changed to 'org.apache.httpcomponents.core5' 

HttpCore 5.0 releases can be co-located with earlier versions.

Please note that as of 5.0 HttpCore requires Java 1.7 or newer.

Please note that at this point 5.0 APIs are considered API experimental and unstable and are
expected to change in the coming releases without providing a migration path.


Change Log
-------------------

* PATCH method support
  Contributed by Ɩmer Ɩzkan <omer at ozkan.info>

* HTTPCORE-412: Support for trailing headers in outgoing HTTP messages
  Based on contribution by Daneel Yaitskov <rtfm.rtfm.rtfm at gmail.com>

* HTTPCORE-411, RFC 7320, RFC 7321: Made Expect-Continue handshake compliant with the spec
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed handling of pipelined HEAD requests
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-409: NIO HttpServer does not shutdown listener ExecutorService
  Contributed by Hiranya Jayathilaka <hiranya at apache.org>

* HTTPCORE-406: PAX-EXAM tests with an embedded HTTP server
  Contributed by Benson Margulies <benson at basistech.com>

* RFC 7230: increased the default max number of concurrent connection for the same route from 2 to 5
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: improved compliance of the default connection re-use strategy
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: reject HTTP/1.1 requests with absent Host header or multiple Host headers
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: permit some empty lines before message head
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: disallow multiple Content-Length headers / header elements
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: reject headers containing whitespaces between the header field name and colon in strict mode
  (when parsing request messages on the server-side)
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: reject messages with incompatible major protocol version
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTP/2: added immutable MessageHead interface common for both HTTP/1.1 and HTTP/2 messages
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPCORE-396: PrivateKeyStrategy does not work with NIO SSL
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* RFC 7230: it is legal for any request method to enclose an entity; revised message delineation logic;
  removed HttpEntityEnclosingRequest interface; fixes HTTPCORE-318, HTTPCORE-380
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Use CharSequence instead of CharArrayBuffer for header element parsing
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* TokenParser to use CharSequence instead of CharArrayBuffer
  Contributed by Oleg Kalnichevski <olegk at apache.org>




Release 4.4.4
-------------------

This is a maintenance release that fixes a number of issues discovered since 4.4.3.

Please note that as of 4.4 HttpCore requires Java 1.6 or newer.


Change Log
-------------------

* [HTTPCORE-410] PoolStats made Serializable
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* BufferedHttpEntity to use HttpEntity#writeTo when buffering non-repeatable entities
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed race condition in request initialization code in async client protocol handlers
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed handling of pipelined HEAD requests
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-409] NIO HttpServer does not shutdown listener ExecutorService 
  Contributed by Hiranya Jayathilaka <hiranya at apache.org>


Release 4.4.3
-------------------

This is a maintenance release that fixes a regression introduced by release 4.4.2.

Please note that as of 4.4 HttpCore requires Java 1.6 or newer.


Change Log
-------------------

* Fixed regression introduced by HTTPCORE-399. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.4.2
-------------------

This maintenance release fixes a bug in HTTP request pipelining code discovered 
after 4.4.1 release.

Please note that as of 4.4 HttpCore requires Java 1.6 or newer.


Change Log
-------------------

* Throw ConnectionClosedException instead of IllegalStateException if an attempt is made to 
  use a closed (not bound to a socket) blocking connection.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-399] Non-blocking client connections incorrectly suspend output causing 
  sequential execution of requests. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.4.1
-------------------

This maintenance release fixes a number of minor bugs found since 4.4.

Please note that as of 4.4 HttpCore requires Java 1.6 or newer.


Change Log
-------------------

* [HTTPCORE-396]: PrivateKeyStrategy does not work with NIO SSL.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-395]: VersionInfo#getUserAgent reports incorrect Java version.
  Contributed by Michael Osipov <michaelo at apache.org>

* Non-blocking connection should not trigger end-of-stream callback as long as there is still
  data in the session input buffer. This can cause a series of short pipelined requests to
  fail prematurely in case of an unexpected connection termination by the opposite endpoint. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.4
-----------------

This is the first stable (GA) release of HttpCore 4.4. Notable features included in 
the 4.4 series are:

* Support for pipelined request processing on the server-side

* Support for pipelined request execution on the client-side

* Simplified bootstrapping of blocking and non-blocking (NIO) HTTP server implementations   

* Inclusion of SSL context initialization utilities from HttpClient

Please note that as of 4.4 HttpCore requires Java 1.6 or newer.


Change Log
-------------------

* Performance optimizations
  Contributed by Dmitry Potapov <dpotapov at yandex-team.ru>

* Update Apache Commons Logging version from 1.1.3 to 1.2. 
  Contributed by Gary Gregory <ggregory at apache.org>


Release 4.4-BETA1
-------------------

This is the first BETA release from 4.4 release series. Notable features included in 
the 4.4 series are:

* Support for pipelined request processing on the server-side

* Support for pipelined request execution on the client-side

* Simplified bootstrapping of blocking and non-blocking (NIO) HTTP server implementations   

* Inclusion of SSL context initialization utilities from HttpClient

* New HTTP element tokenizer implementation 


Please note that as of 4.4 HttpCore requires Java 1.6 or newer.




Release 4.4-ALPHA1
-------------------

This is the first release from the 4.4.x development branch. The most notable features included in 
this release are:

* Support for pipelined request processing on the server-side

* Support for pipelined request execution on the client-side

* Simplified bootstrapping of blocking and non-blocking (NIO) HTTP server implementations   

This release also includes all fixes from the stable 4.2.x release branch.


Change Log
-------------------

* [HTTPASYNC-77] system resources are not correctly deallocated if I/O reactor is shut down
  while still inactive (not started)
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-377] Allow zero SO_LINGER (immediate abortive close).
  Contributed by Dmitry Potapov <potapov.d at gmail.com>

* [HTTPCORE-376] AbstractNIOConnPool#requestCancelled() should not process pending requests
  wnen being shut down.
  Contributed by Dmitry Potapov <potapov.d at gmail.com>

* [HTTPASYNC-69]: async request handler is closed by HttpAsyncRequestExecutor#closed 
  if the underlying connection is found to be in an inconsistent state.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-372] Blocking and non-blocking chunk decoders to throw an I/O exception if data stream
  is terminated without a closing chunk.
  Contributed by Dmitry Potapov <potapov.d at gmail.com>

* [HTTPCORE-368] Customizable buffer management strategies for SSLIOSession.
  Contributed by offbynull <offbynull at gmail.com>

* [HTTPCORE-358] Added I/O reactor listener backlog parameter.
  Contributed by Dmitry Potapov <potapov.d at gmail.com>

* [HTTPCORE-357] Avoid DNS lookups in SSLIOSession.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Update JUnit to version 4.11 from 4.9  
  Contributed by Gary Gregory <ggregory at apache.org>



Release 4.3.2
-------------------

This maintenance release fixes a number of bugs and regressions found since 4.3.1, mostly in the 
NIO transport components. All users of HttpCore 4.3 are advised to upgrade.

Change Log
-------------------

* [HTTPCORE-371] Support for SSL re-negotiation with NIO.
  Contributed by Asankha Perera <asankha at apache.org>

* [HTTPCORE-373] Out of sequence HTTP response causes NPE in HttpAsyncRequestExecutor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-370] Race condition if connection request succeeds and times out at the same time.  
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* (Regression) Fixed synchronization issue in blocking and non-blocking connection pool 
  implementations caused by HTTPCORE-362
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.3.1
-------------------

This maintenance release fixes a number of bugs and regressions found since 4.3, mostly in the 
NIO transport components. All users of HttpCore 4.3 are advised to upgrade.

Change Log
-------------------

* [HTTPCORE-367] (Regression) Non-blocking connections can enter a tight loop while waiting 
  for a chunk header split across multiple TCP frames.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-366] Non-blocking SSLIOSession can enter an infinite loop if the underlying
  channel receives incoming data simultaneously with inactivity timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-364] IOSessionImpl.getLocalAddress() (etc.) creates unnecessary copy of channel

* DefaultConnectingIOReactor / DefaultListeningIOReactor do not correctly apply some initial 
  socket settings.
  Contributed by Andreas Veithen <veithen at apache.org>

* [HTTPCORE-357] Avoid DNS lookups in SSLIOSessions in server mode.
  Contributed by Isaac Cruz Ballesteros <icruzbal at gmail.com>

* [HTTPCORE-362] Purge pool per route map after closing out expired or idle connections with 
  #closeExpired and #closeIdle methods. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-361] Reduced intermediate garbage in HeaderGroup#getFirstHeader()
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-355] HttpAsyncRequestExecutor fails when its handler is not ready to generate
  a request.
  Contributed by jd <j1234d2003 at yahoo.com>

* [HTTPCORE-354] BasicConnFactory don't use SocketConfig#isSoKeepAlive.
  Contributed by David Ignjic <ignjic at gmail.com>

* [HTTPCORE-347] (Regression) HttpResponse#setStatusCode() does not update reason phrase.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.3
-------------------

This is the first stable (GA) release of HttpCore 4.3. The most notable features in the 4.3
branch are:

* Deprecation of preference and configuration API based on HttpParams interface in favor of
  constructor injection and plain configuration objects.

* Reliance on object immutability instead of access synchronization for thread safety.
  Several old classes whose instances can be shared by multiple request exchanges have
  been replaced by immutable equivalents.

The 4.3 branch also contains performance optimizations such as reduced TCP packet fragmentation
and more efficient lease / release operations for pools of persistent connections on the client
side.

This release also includes all fixes from the 4.2.x release branch.

Users of HttpCore 4.2 are encouraged to upgrade.


Change Log
-------------------

* [HTTPCORE-343] AbstractNIOConnPool to fire request callbacks outside the pool lock.
  This makes it possible to re-enter pool methods from a callback event.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-340] AbstractNIOConnPool to support lease timeout distinct from connect timeout.
  Contributed by Ignat Alexeyenko <ignatalexeyenko at gmail.com>

* Blocking connections do not clean session input buffer when closed (input data from a read
  operation may still remain in the buffer if the connection is re-opened).
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.2.5
-------------------

This maintenance release fixes a number of bugs found in NIO components since 4.2.4. We advise
users of HttpCore NIO of all versions to upgrade.

This is likely to be the last release in the 4.2.x branch.


Change Log
-------------------

* [HTTPCORE-345] EntityAsyncContentProducer fails to release resources allocated by the underlying
  entity when #produceContent is never invoked.
  Contributed by Tad Whitenight <tadwhitenight at gmail.com>

* Non-blocking connection pool to avoid scanning the entire queue of pending connection requests
  on each connection lease / release operation (under heavy load the request queue can contain
  a significant number of pending requests, a full linear scan of which can cause massive
  performance degradation).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Use bulk ByteBuffer#put method instead of single byte ByteBuffer#put
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-336]  Unhandled CancelledKeyException leads to a shutdown of the underlying IOReactor.
  Contributed by Thomas Dudek <mail.dudek at gmail.com>



Release 4.3-BETA2
-------------------

This is the second BETA release from the 4.3.x release branch. This release addresses performance
issues in the non-blocking connection pool implementation and also includes a number of performance
improvements in the low level NIO based transport components.

Change Log
-------------------

* [HTTPCORE-300] ContentType to provide support for custom parameters.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Non-blocking connection pool to avoid scanning the entire queue of pending connection requests
  on each connection lease / release operation (under heavy load the request queue can contain
  a significant number of pending requests, a full linear scan of which can cause massive
  performance degradation).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Basic connection pool implementations to perform default port resolution for HTTP and HTTPS
  schemes.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Use bulk ByteBuffer#put method instead of single byte ByteBuffer#put
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-336]  Unhandled CancelledKeyException leads to a shutdown of the underlying IOReactor.
  Contributed by Thomas Dudek <mail.dudek at gmail.com>


Release 4.3-BETA1
-------------------

This is the first BETA release from the 4.3.x release branch. The main theme of the 4.3 release
series is streamlining of component configuration and deprecation of the old configuration
API based on HttpParams in favor of constructor-based dependency injection and plain objects
for configuration parameters.

This release also includes performance optimizations intended to reduce TCP packet fragmentation
when writing out HTTP messages both in blocking and non-blocking I/O modes, which should result
in up to 20% higher throughput for short entity enclosing messages.

This release also includes all fixes from the stable 4.2.x release branch.


Change Log
-------------------

* Reduced TCP packet fragmentation when writing out message content with blocking and
  non-blocking connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-330] Clarify InputStreamEntity length constructor argument.
  Contributed by John McCarthy <jmsignup at gmail.com>

* [HTTPCORE-323] Undocumented UnsupportedCharsetException in ContentType#getOrDefault.
  Contributed by Gary D. Gregory <ggregory at apache.org>



Release 4.2.4
-------------------

This maintenance release fixes a number of bugs found in NIO components since 4.2.3. We advise
users of HttpCore NIO of all versions to upgrade.

Change Log
-------------------

* [HTTPCORE-334] https request to a non-responsive but alive port over a non-blocking connection
  results in a busy loop in one of I/O dispatch threads.
  Contributed by Scott Stanton <snstanton at gmail.com>

* [HTTPCORE-331] BasicFuture no longer executes notification callbacks inside a synchronized block.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-319] Non-blocking SSLIOSession can fail to shut down correctly when the underlying
  connection gets terminated abnormally by the opposite endpoint in case there is a truncated or
  corrupted encrypted content in the input buffer and there is still data in the output buffer
  that needs to be flushed out (most likely to occur with POST or PUT requests).
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.3-ALPHA1
-------------------

This is the first release from the 4.3.x release branch. The main focus of the 4.3 release
series is streamlining of component configuration and deprecation of the old configuration
API based on HttpParams in favor of constructor based dependency injection and plain objects
for configuration parameters.

We are kindly asking all upstream projects to review API changes and help us improve
the APIs by providing feedback and sharing ideas on dev@hc.apache.org.

This release also includes all fixes from the stable 4.2.x release branch.



Release 4.2.3
-------------------

This maintenance release fixes a number of bugs and found since 4.2.2 including
a major bug in the NIO module that can cause an infinite loop in SSL sessions under special
circumstances when the remote peer terminates the session in the middle of SSL handshake.
Please note this issue does not affect blocking I/O components used by HttpClient.

We advise users of HttpCore NIO of all versions to upgrade.

Change Log
-------------------

* [HTTPCORE-319, HTTPCORE-322] Non-blocking SSLIOSession can enter an infinite loop under
  special circumstances when the remote peer terminates the session in the middle of SSL handshake.
  Contributed by Paul Donohue <apache-jira at PaulSD.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-316] HeaderGroup#clone removes headers from the original object.
  Contributed by Markus Thies <markus at dr-thies.com>

* [HTTPCORE-315] AbstractNIOConnPool fails to correctly deallocate connection if it is immediately
  released from the session request callback causing a resource leak.
  Contributed by Scott Stanton <snstanton at gmail.com>

* [HTTPCORE-313] ContentType#parse now ignores empty and blank charset attributes.
  HttpEntityUtils#toString now throws checked I/O exception if it  encounters an unsupported
  charset.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.2.2
-------------------

This is a maintenance release that fixes a number of bugs and regressions found since 4.2.1
including a major bug in the NIO module causing incorrect handling of outgoing Content-Length
delimited messages larger than 2GB.

Users of HttpCore 4.2 are advised to upgrade.

Change Log
-------------------

* [HTTPCORE-312] NIO length delimited content encoder incorrectly handles messages larger than 2GB.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-310] Fixed regression in DefaultConnectionReuseStrategy causing it to incorrectly
  flag connections as non-reusable after a 204, 205 or 304 response.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-309] Fixed regression in HttpAsyncRequestExecutor causing it to handle 204, 205
  and 304 responses incorrectly by returning a message with an enclosed content body.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-306] I/O reactor TCP_NODELAY parameter now defaults to true.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-21] request execution handler does not get closed in case of a premature HTTP
  exchange termination.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-303] ContentType made Serializable.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.2.1
-------------------

This is a maintenance release that fixes a non-critical number of bugs found since 4.2.
Users of HttpCore 4.2 are encouraged to upgrade.

Change Log
-------------------

* [HTTPCORE-299] ContentType should rely on Charset#name() instead of Charset#toString()
  for building header value.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-263] Under rare circumstances incorrectly delineated or garbled HTTP message
  can cause an IndexOutOfBoundsException in AbstractSessionInputBuffer#readLine()
  Contributed by Michael Pujos <bubbleguuum at free.fr>

* Made connection pools use FIFO algorithm instead of LIFO when leasing / releasing persistent
  connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-298] Fixed non-blocking SSLIOSession state can getting out of sync with the underlying
  IOSession in case the I/O session is terminated by the I/O reactor rather than by the protocol
  handler.
  Contributed by Sandeep Tamhankar <sandman at electric-cloud.com>

* Fixed NPE in StringEntity constructor thrown if ContentType#getCharset is null.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.2
-------------------

This is the first stable (GA) release of HttpCore 4.2. The most notable features included in this
release are connection pool components for blocking and non-blocking HTTP connections and new
asynchronous client and server-side protocol handlers.

New protocol handling API used in conjunction with connection pooling components is expected to
make development of asynchronous HTTP client agents and HTTP proxies easier and less error prone.

Connection pool components are based on mature code migrated from HttpClient and HttpAsyncClient
modules but have a slightly different API that makes a better use of Java standard concurrent
primitives.

Change Log
-------------------

* Fixed HttpAsyncRequestExecutor incorrect execution of message exchanges that span across multiple
  hosts (for instance, in case of a request redirect).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* AbstractHttpClientConnection#isResponseAvailable method now catches SocketTimeoutException
  and returns false.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-296] server-side connections (both blocking and non-blocking) can now handle entity
  enclosing requests without Content-Length and Transfer-Encoding headers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-295] [HTTPCORE-288] Provided direct access to the underlying socket of non-blocking
  HTTP connection to allow modification of socket level settings such as TCP_NODELAY, SO_KEEPALIVE,
  TrafficClass, etc.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-289] HttpAsyncService fails to invoke Cancellable#cancel() when the ongoing HTTP
  exchange is aborted by the client.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Incompatible changes
--------------------
[Compared to release version 4.1.4]

The following methods have been deprecated for some time now and have been deleted:

org.apache.http.impl.SocketHttpServerConnection#createHttpDataReceiver(Socket, int, HttpParams)
org.apache.http.impl.SocketHttpServerConnection#createHttpDataTransmitter(Socket, int, HttpParams)
org.apache.http.protocol.HttpRequestHandlerRegistry#matchUriRequestPattern(String, String)

The following classes have been deprecated for some while now and have been deleted:

org.apache.http.nio.entity.ByteArrayNIOEntity
org.apache.http.nio.entity.FileNIOEntity
org.apache.http.nio.entity.HttpNIOEntity
org.apache.http.nio.entity.StringNIOEntity
org.apache.http.nio.protocol.NHttpClientHandlerBase
org.apache.http.nio.protocol.NHttpServiceHandlerBase

Release 4.2-BETA1
-------------------

This is the first BETA release of HttpCore 4.2. This release comes with completely redesigned
and rewritten asynchronous protocol handlers. New protocol handling API used in conjunction with
connection pooling components is expected to make development of asynchronous HTTP client agents
and HTTP proxies easier and less error prone.

Sample application shipped with the release include an example of an HTTP file server capable of
direct channel (zero copy) data transfer and an example of a non-blocking, fully streaming reverse
proxy.

This release also incorporates bug fixes from the stable 4.1.x branch and includes an updated
HttpCore tutorial.



Release 4.1.4
-------------------

This is a maintenance release that fixes a number of bugs found since 4.1.3. It is also likely
to be the last release in the 4.1.x branch.

Change Log
-------------------

* [HTTPCORE-286] Canceled I/O session can cause an IllegalStateException in BaseIOReactor#validate
  leading to an abnormal termination of the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-257] Fixed incorrect results produced by DefaultConnectionReuseStrategy when handling
  response messages whose content entity has been decoded or modified by a protocol interceptor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-283] Workaround for a bug causing termination of the I/O reactor in case of exception
  thrown by NHttpServiceHandler#requestReceived or NHttpClientHandler#responseReceived
  methods. A more comprehensive fix for the bug applied to the 4.2 branch.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-281] ResponseConnControl protocol interceptor does not correctly populate connection
  persistence control headers when sending a HTTP/1.1 response message in response to a HTTP/1.0
  request message.
  Contributed by William R. Speirs <bill.speirs at gmail.com>

* [HTTPCORE-282] The default value of the internal event mask of newly created non-blocking I/O
  is not correctly initialized, which causes the READ interest bit to get cleared in the interest
  op queuing mode unless the event mask is explicitly reset.
  Contributed by Sadeep Jayasumana <sadeep at wso2.com> and Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-268] Handle runtime exceptions thrown by SSLEngine.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.2-ALPHA2
-------------------

This is the second ALPHA release of HttpCore 4.2. This release comes with completely redesigned
and rewritten asynchronous protocol handlers. New protocol handling API used in conjunction with
connection pooling components introduced in the previous ALPHA release is expected to make
development of asynchronous HTTP client agents and HTTP proxies easier and less error prone.

Sample application shipped with the release include an example of an HTTP file server capable of
direct channel (zero copy) data transfer and an example of a non-blocking, fully streaming reverse
proxy.

We are kindly asking existing and prospective users of HttpCore to review and try out the
new protocol handlers and give us feedback while the 4.2 API is still not final. If no major flaws
are discovered the 4.2 API is expected to be frozen with the next BETA release.

Please note that new features included in this release are still considered experimental and
their API may change in the future ALPHA releases. This release also marks the end of support for
Java 1.3. As of this release HttpCore requires Java 1.5 for all its components. Several classes and
methods deprecated between versions 4.0-beta1 and 4.0 GA (more than two years ago) have been
removed in this release.

Change Log
-------------------

* [HTTPCORE-270] Fixed IllegalStateException in AbstractSessionOutputBuffer and
  AbstractSessionInputBuffer.
  Contributed by William R. Speirs <bill.speirs at gmail.com>

* [HTTPCORE-269] Connection pools incorrectly handle lease requests when the max limit for the given
  route has been exceeded and all connections in the route pool are stateful.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.2-ALPHA1
-------------------

This is the first ALPHA release of 4.2. The most notable feature included in this release is
support for connection pools of blocking and non-blocking HTTP connections. Connection pool
components are based on mature code migrated from HttpClient and HttpAsyncClient modules but have
a slightly different API that makes a better use of Java standard concurrent primitives.

Support for connection pools in HttpCore is expected to make development of client and proxy HTTP
services easier and less error prone.

Please note that new features included in this release are still considered experimental and
their API may change in the future ALPHA releases. This release also marks the end of support for
Java 1.3. As of this release HttpCore requires Java 1.5 for all its components. Several classes and
methods deprecated between versions 4.0-beta1 and 4.0 GA (more than two years ago) have been
removed in this release.

Change Log
-------------------

* [HTTPCORE-268] Handle runtime exceptions thrown by SSLEngine.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.3
-------------------

This is an emergency release that fixes a severe regression in the non-blocking SSL I/O code
introduced in release 4.1.2.

* [HTTPCORE-266] SSLIOSession does not correctly terminate if the opposite end shuts down connection
  without sending a 'close notify' message causing an infinite loop in the I/O dispatch thread.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.2
-------------------

This is a patch release that fixes a number of bugs found in the previous version.

Please note that several classes and methods deprecated between versions 4.0-beta1 and 4.0 GA
(more than two years ago) will also be removed in the 4.2 branch.

Users of 4.0.x versions are advised to upgrade and replace deprecated API calls following
recommendations in Javadocs.

* [HTTPCORE-261] IOSession#setSocketTimeout() method does not reset the timeout count.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-260] Non-blocking SSL I/O session can terminate prematurely causing message body
  truncation when message content is chunk coded and the connection is closed on the opposite end.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-257] Fixed incorrect results produced by DefaultConnectionReuseStrategy when handling
  response messages whose content entity has been decoded or modified by a protocol interceptor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.1
-------------------

This is a patch release that fixes a number of non-critical issues found since release 4.1.

This release marks the end of support for Java 1.3. As of release 4.2 HttpCore will require
Java 1.5 for all its components.

Please note that several classes and methods deprecated between versions 4.0-beta1 and 4.0 GA
(more than two years ago) will also be removed in the 4.2 branch.

Users of 4.0.x versions are advised to upgrade and replace deprecated API calls following
recommendations in Javadocs.

* In case of an unexpected end of stream condition (the peer closed connection prematurely)
  truncated Content-Length delimited message bodies will cause an I/O exception. Application
  can still choose to catch and ignore ConnectionClosedException in order to accept partial
  message content.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-255]: Fixed resource management in InputStreamEntity#writeTo()
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-254]: Erratic results from metrics (sebb)

* [HTTPCORE-242]: Fixed NPE in AsyncNHttpClientHandler caused by an early response to an
  entity enclosing request.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.1
-------------------

This is the first stable (GA) release of HttpCore 4.1. This release provides a compatibility mode
with JREs that have a naive (broken) implementation of SelectionKey API and also improves
compatibility with the Google Android platform. There has also been a number of performance
related improvements and bug fixes in both blocking and non-blocking components.

Change Log
-------------------

* [HTTPCORE-240]: DefaultConnectingIOReactor leaks a socket descriptor if the session request fails.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-239]: The ChunkEncoder could request for a negative buffer limit causing an
  IllegalArgumentException.
  Contributed by Asankha Perera <asankha at apache.org>

* [HTTPCORE-236]: SSLIOSession#isAppInputReady() does not check the status of the session input
  buffer.
  Contributed by Dmitry Lukyanov <dlukyanov at ukr.net>

* [HTTPCORE-233]: EntityUtils#toString() and EntityUtils#toByteArray() to return null if
  HttpEntity#getContent() is null
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-231] Fixed incorrect handling of HTTP entities by non-blocking LengthDelimitedDecoder
  when the Content-Length value is larger than Integer.MAX_VALUE.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1-BETA2
-------------------

This is the second BETA release of HttpCore 4.1. This is mainly a bug fix release that addresses
a number of non-critical bugs.

The most significant change in this release is deprecation of the HttpEntity#consumeContent()
method and streamlining of connection management and resource deallocation by HTTP entities.
Please refer to the Javadocs for details.

* [HTTPCORE-229] AbstractSessionInputBuffer#readLine(CharArrayBuffer) returns incorrect
  number of characters read by the method when using non-standard HTTP element charset.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Non-blocking connections can trigger #responseReady / #requestReady events by mistake
  when the underlying session is already closed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-228] Fixed NPE in AsyncNHttpServiceHandler caused by entity enclosing requests
  if no matching request handler can be found.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-227] Fixed incorrect request / response count by non-blocking connections.
  Contributed by Harold Lee <harold at hotelling.net>

* [HTTPCORE-226] Improved compatibility of NIO components with Google Android.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* ByteArrayBuffer, CharArrayBuffer, BasicHeader, BufferedHeader, HeaderGroup, BasicRequestLine,
  BasicStatusLine made Serializable.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1-BETA1
-------------------

This is the first BETA release of HttpCore 4.1. This release finalizes the API introduced in the
4.1 development branch. It also fixes a number of bugs discovered since the previous release and
delivers a number of performance optimizations in the blocking HTTP transport components.
The blocking HTTP transport is expected to be 5% to 10% faster compared to previous releases.

* [HTTPCORE-222] Fixed Import-Package in the OSGi META-INF
  Contributed by Willem Jiang <willem.jiang at gmail.com>

* [HTTPCORE-177] Reduce intermediate data buffering by reading large chunks of data directly from
  the underlying socket stream. This results in improved performance of blocking read operations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-220] IdentityDecoder fails to detect end of stream when using file channels.
  Contributed by Asankha C. Perera <asankha at apache.org>

* [HTTPCORE-218] ChunkEncoder#write method no longer returns incorrect value if
  the data to write is greater than the size of the internal buffer used by the encoder.
  Contributed by Richie Jefts <rjefts at gmail.com>

* [HTTPCORE-209] Added parameter to set SO_REUSEADDR on sockets bound to a local address.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-207] SocketHttp*Connection classes can leak sockets if the connection is half-closed
  Contributed by David Koski <david_koski at mac.com>

Release 4.1-ALPHA1
-------------------

This is the first public release from the 4.1 branch of HttpCore. This release adds a number of
new features, most notable being introduction of compatibility mode with IBM JREs and other JREs
with naive (broken) implementation of SelectionKey API.

Please note new classes and methods added in the 4.1 branch are still considered API unstable.

* Ensure that an attempt is made to close out all active sessions gracefully in case of an abnormal
  shutdown of the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-201] OSGi Export-Package to specify release version
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-183] Added Thread-safe implementations of HttpParams and HttpProcessor -
  SyncBasicHttpParams and ImmutableHttpProcessor classes
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-199] ContentInputStream implements InputStream#available().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-195] Truncated chunk-coded streams can now be tolerated by catching and discarding
  TruncatedChunkException.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-155] Compatibility mode with IBM JRE and other JREs with naive (broken) implementation
  of SelectionKey.
  Contributed by Marc Beyerle <marc.beyerle at de.ibm.com> and Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-191] Blocking HTTP connections are now capable of correctly preserving their internal
  state on SocketTimeoutExceptions, which makes it possible to continue reading from the connection
  after a socket timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-190] ChunkedInputStream is now capable of correctly preserving its internal state on
  SocketTimeoutExceptions, which makes it possible to continue reading from the stream after a
  socket timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0.1
-------------------

This is a patch release addressing a number of issues discovered since the 4.0 release. Users
of NIO module are advised to upgrade.

* [HTTPCORE-198] CONNECT request includes Host header for HTTP 1.1 connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-196] SSLIOSession now unwraps encrypted data more aggressively eliminating long
  pauses when receiving data over non-blocking connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-197] Fixed bug causing the non-blocking ChunkDecoder to report some data stream as
  truncated under special conditions.
  Contributed by Denis Rogov <denrogov at gmail.com> and Oleg Kalnichevski <olegk at apache.org>

* SSLIOSession#isAppOutputReady and SSLIOSession#isAppInputReady no longer ignore the application
  event mask causing I/O event notifications for unrequested type of events.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-193] Fixed problem with SSLIOSession incorrectly handling of end-of-stream condition.
  Contributed by Asankha C. Perera <asankha at apache.org> and Oleg Kalnichevski <olegk at apache.org>


Release 4.0
-------------------

This is the first stable (GA) release of HttpCore 4.0. This release mainly improves the
documentation and fixes a few minor bugs reported since the previous release. HttpCore
now comes with a complete tutorial presenting an in-depth coverage of the API.

HttpCore is a set of low level HTTP transport components that can be used to build custom
client and server-side HTTP services with a minimal footprint. HttpCore supports two I/O
models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O
model based on Java NIO.  The blocking I/O model may be more appropriate for data intensive,
low latency scenarios, whereas the non-blocking model may be more appropriate for high latency
scenarios where raw data throughput is less important than the ability to handle thousands of
simultaneous HTTP connections in a resource efficient manner.

* [HTTPCORE-180] Fixed NPE in standard I/O event dispatchers when
  IOEventDispatch#disconnected fires before the session was fully initialized
  (IOEventDispatch#connected was not called).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-175] Chunk decoders no longer accept truncated chunks as valid input.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 3
-------------------

The third BETA version of HttpComponents Core has been released. This is a
maintenance release, which addresses a number of issues discovered since the
previous release.

The only significant new feature is an addition of an OSGi compliant bundle
combining HttpCore and HttpCore NIO jars.

* [HTTPCORE-173] Tolerate missing closing chunk if the chunk coded content
  is terminated by the end of stream (EOF) condition.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-174] Position is incremented twice in ContentLengthInputStream#skip(long)
  Contributed by Ildar Safarov <ildar.safarov at gmail.com>

* [HTTPCORE-125] OSGi bundle containing HttpCore & HttpCore NIO jars.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* CancelledKeyException thrown in BaseIOReactor#validate() no longer causes
  a premature I/O reactor shutdown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-172] Added #close() method to SharedInputBuffer and
  SharedOutputBuffer. The purpose of the new method is to close the buffer
  in case of normal / orderly termination of the underlying HTTP connection.
  Use #shutdown() method to force-close the buffer in case of abnormal /
  exceptional termination of the underlying connection.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-170] Fixed race condition in SharedOutputBuffer.
  Contributed by Jason Walton <Jason.Walton at alcatel-lucent.com>

* [HTTPCORE-169] Fixed bug causing connecting I/O reactors to shut down due to
  ClosedChannelException if a pending session request is cancelled before the new
  channel has been registered with the selector.
  Contributed by Anders Wallgren <anders_wallgren at alum.mit.edu>

* [HTTPCORE-167] Fixed handling the end of stream (EOF) condition in the #isStale()
  check of blocking HTTP connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-166] NIO reactors now maintain an audit log of fatal exceptions,
  which can be used to examine the cause and problems experienced during
  the shutdown process.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-165] Improved handling of CancelledKeyException in I/O reactors
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 2
-------------------

The second BETA version of HttpComponents Core has been released. This release
adds a number of improvements to the NIO components, most notable being improved
asynchronous client-side and server-side protocol handlers.

There has been a number of important bug fixes in HttpCore NIO module, whereas
HttpCore base module has had very few changes.

All upstream projects dependent on HttpCore NIO are strongly advised to upgrade.

* [HTTPCORE-163] Fixed AbstractMultiworkerIOReactor#execute() to correctly
  propagate the original I/O exception in case of an abnormal termination.
  Contributed by Patrick Moore <patmoore at ieee.org>

* Changed behavior of IdentityDecoder & LengthDelimitedDecoder to throw
  an IOException if data is attempted to be written beyond the length
  of a FileChannel.  Previously would write nothing.
  Contributed by Sam Berlin <sberlin at apache.org>

* Fixed bug in LengthDelimitedDecoder & IdentityDecoder that caused transfers
  to a FileChannel to overwrite arbitrary parts of the file, if data was
  buffered in SessionInputBuffer.
  Contributed by Sam Berlin <sberlin at apache.org>

* Fixed concurrency bug in the ThrottlingHttpServerHandler protocol handler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed bug in SharedInputBuffer that caused input events to be
  incorrectly suspended.
  Contributed by Asankha C. Perera <asankha at wso2.com>

* [HTTPCORE-150] Entity implementation that serializes a Java object
  Contributed by Andrea Selva <selva.andrea at gmail.com>

* [HTTPCORE-157] ChunkedOutputStream#flush() now behaves consistently with the
  specification of OutputStream#flush().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-147] Fixed handling of requests with partially consumed content
  in ThrottlingHttpServiceHandler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-92] ChunkEncoder splits input data larger than available space
  in the session output buffer into smaller chunks instead of expanding
  the buffer.
  Contributed by Andrea Selva <selva.andrea at gmail.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-149] I/O reactors now count period of inactivity since the
  time of the last read or write operation. Previously only read
  operations resulted in timeout counter reset.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-148] Improved asynchronous server and client HTTP protocol
  handler implementations.
  Contributed by Sam Berlin <sberlin at gmail.com>

* [HTTPCORE-143] Ensure the underlying channel is closed if the session
  request is canceled or times out.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-140] Fixed timeout handling in ThrottlingHttpServiceHandler.
  Contributed by Lorenzo Moretti <moznerol at hotmail.com> and
  Oleg Kalnichevski <olegk at apache.org>



Release 4.0 Beta 1
-------------------

The first BETA version of HttpComponents Core has been released. This release
can be considered a major milestone, as it marks the end of API instability
in HttpCore. As of this release the API compatibility between minor releases
in 4.x codeline will be maintained.

This release includes several major improvements such as enhanced HTTP message
parsing API and optimized parser implementations, Java 5.0 compatibility
for HttpCore NIO extensions. Upstream projects are strongly encouraged to
upgrade to the latest release.

The focus of the development efforts will be gradually shifting towards
providing better test coverage, documentation and performance optimizations.

Change Log:
----------

* [HTTPCORE-141] Session request timeout in DefaultConnectingIOReactor
  invalidates the request.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-137] DefaultHttpRequestFactory extended to support all methods
  specified in RFC 2616 (except CONNECT).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Replaced HTTP parameter linking with a simple child/parent stack.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-134] all serialVersionUID attributes are private
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-133] Clone support for basic HTTP message elements and
  non-streaming entities.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-127] Improved API for lifecycle management of listening I/O
  reactors. One can now suspend and resume listener endpoints.
  Contributed by Asankha C. Perera <asankha at wso2.com>

* [HTTPCORE-112] DefaultConnectionReuseStrategy interprets token sequences
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-122] new interface TokenIterator and basic implementation
  Contributed by Roland Weber <rolandw at apache.org>

* HttpCore NIOSSL classes moved to HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HttpCore NIO ported to Java 1.5.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-130] Fixed over-synchronization bug leading to a thread deadlock
  condition in SSL IOEventDispatch implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-37] HttpParams beans
  Contributed by Stojce Dimski <sdmiski at yahoo.it>

* [HTTPCORE-128] Simplified injection of custom NIO connection implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-126] Improved HTTP message parsing API and optimized parser
  implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Do not include "Connection: close" to 500 responses per default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-121] new interface HeaderElementIterator
  Contributed by Andrea Selva <selva.andrea at gmail.com>

* [HTTPCORE-123] Fixed problem with SSLSession losing buffered data, if the
  connection has been closed by the peer.
  Contributed by Risto ReinpƵld <risto.reinpold at gmail.com>



Release 4.0 Alpha 6
-------------------

The sixth ALPHA version of HttpComponents Core has been released. This release
sports an improved message parsing and formatting API in the base module and
lots of incremental improvements and bug fixes in the NIO and NIOSSL modules.
Based on the improved API, it is now possible to send and receive SIP messages
with HttpComponents Core.

HttpCore is now feature complete and we are planning to freeze the public APIs
as of next release (BETA1).

* [HTTPCORE-120] new interface HeaderIterator, available from HttpMessage
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-118] Purge closed sessions prior to opening new ones. This should
  reduce chances of running out of memory when opening and closing lots of
  NIO connections in a tight loop.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-117] Fixed bug preventing protocol handlers from closing timed out
  NIO connection when pending output (output session buffer is not empty).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-86] Allow for optional handling of runtime exceptions
  thrown by protocol handlers to ensure the I/O dispatch thread
  remains running.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-116] moved parameter names to interfaces
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-109] Improved shutdown process of the I/O reactors in NIO modules.
  I/O reactors now attempt to terminate connections gracefully before shutting
  down the underlying socket channels.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-107] allow sending and receiving of SIP messages
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-114]: Fixed incorrect handling of the end-of-stream condition
  in SSLIOSession.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-110] refactored message parsing and formatting logic
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-113] Removed unnecessary target hostname resolution from
  non-blocking client protocol handlers.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-108] Close all channels registered with the I/O reactor during
  shutdown. Fixed the problem with DefaultListeningIOReactor not releasing
  socket ports until JVM is restarted.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-106] Pluggable HTTP message parsers and message writers
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-105] Consistent class names in base and NIO modules
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-100] revised HttpContext hierarchy
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-103] NIO connections now attempt to consume all available session
  data while parsing HTTP messages. This can  potentially improve performance
  of non-blocking SSL connections.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-102] Exceeding of maximum line length limit detected late
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-21] Transport and connection metrics
  Contributed by Andrea Selva <selva.andre at gmail.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-91] new interceptor RequestDate, renamed constants in protocol.HTTP
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-90] Version detection based on build-time properties
  Contributed by Oleg Kalnichevski <olegk at apache.org> and
  Roland Weber <rolandw at apache.org>

* [HTTPCORE-88] Added convenience methods to HttpRequestInterceptorList,
  HttpResponseInterceptorList interfaces
  Contributed by Andrea Selva <selva.andre at gmail.com>

* [HTTPCORE-89]: Fixed bug in DefaultConnectingIOReactor causing incorrect
  handling of local (immediate) connections on some platforms (affects Sun
  Solaris 2.9 / Sparc and likely other Solaris 2.x platforms)
  Contributed by Sam Berlin <sberlin at gmail.com>

Release 4.0 Alpha 5
-------------------

The fifth ALPHA version of HttpComponents Core has been released. This release
delivers a number of incremental improvements across the board in all modules
and adds several performance oriented features such as ability to transfer
data directly between a file and a socket channels.

HttpCore is almost fully feature complete now and we are likely to freeze
the public APIs as of next release (BETA1).

* [HTTPCORE-87] RuntimeExcpetions thrown in I/O worker threads are now correctly
  propagated to the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-84]: Removed DateUtils/DateParseException from core.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-63]: Made I/O select interval configurable for all default I/O
  reactor implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org> and
  Anders Wallgren <anders_wallgren at alum.mit.edu>

* [HTTPCORE-82]: Revised linking of HttpParams to reduce potential for misuse.
  Method #setDefaults() removed from the HttpParams interface.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-81]: Maximum line length and maximum header counts parameters are now
  correctly enforced in both base and NIO modules. Fixed maximum line length check
  when parsing folded header lines.
  Contributed by Steffen Pingel <spingel at limewire.com>

* Added HTTP client handler implementation that allocates fixed size content
  buffers upon initialization and is capable of throttling the rate of I/O events
  in order to make sure those content buffers do not get overflown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-76]: Added IOSession#shutdown() method intended to force-close
  I/O sessions (primarily needed to terminate hung SSL connections).
  Contributed by Sandeep Tamhankar <sandman at electric-cloud.com>

* [HTTPCORE-78]: Added ByteBufferAllocator interface that can be used to apply
  different ByteArray allocation strategies to session and content buffers.
  Use heap bound implementation for short-lived or variable in length (requiring
  frequent content re-allocation) buffers.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-77]: The result of CharsetDecoder#decode() and CharsetEncoder#encode()
  was not checked for errors resulting in an infinite loop in
  SessionInputBuffer#readLine() and SessionOutputBuffer#writeLine()
  when malformed characters were processed.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-71]: HttpParams can be copied.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-75]: DefaultNHttpServerConnection and DefaultNHttpClientConnection
  now correctly terminate the underlying I/O session when closed.
  BufferingHttpServiceHandler now correctly applies connection keep-alive
  strategy when sending a response with no content body.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-73]: Fixed bug preventing NHttpServiceHandler#responseReady and
  NHttpClientHandler#requestReady events from being fired if the HTTP message
  has no content body.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-67]: Improved event listener interface
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-43]: Support for FileChannel#transferFrom() and
  FileChannel#transferTo() methods. Direct coping from and to FileChannel is
  expected to improve performance of file bound operations
  Contributed by Andrea Selva <selva.andre at gmail.com>

* [HTTPCORE-66]: Fixed handling of HTTP HEAD methods
  Contributed by Steffen Pingel <spingel at limewire.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-58]: NIO HTTP connections changed to throw checked
  ConnectionClosedException instead of unchecked IllegalStateException when
  an attempt is made to perform an I/O operation on a closed conection
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-56]: DefaultConnectingIOReactor no longer terminates due to a
  CancelledKeyException, if a session request gets canceled before selection
  key is fully initialized.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 4
-------------------

The forth ALPHA version of HttpComponents Core has been released.
The ALPHA4 release fixes a number of bugs and adds a number of
improvements to HttpCore base and HttpCore NIO extensions.
HttpCore NIO can be used to build HTTP services intended to handle
thousands of simultaneous connections with a small number of I/O
threads. This release also introduces NIOSSL extensions that can be
used to extend HttpCore non-blocking transport components with
ability to transparently encrypt data in transit using SSL/TLS protocol.

* [HTTPCORE-49]: DefaultConnectingIOReactor can now correctly handle
  unresolved socket addresses. It no longer terminates with the
  UnresolvedAddressException runtime exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-42]: Added server-side API for the expectation verification.
  Improved support for the 'expect: continue' handshake in HttpCore and
  HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-26]: Added SSL support for HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-40]: API classes no longer reference impl classes in module-main.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-39]: Refactored HttpStatus, spun off [English]ReasonPhraseFactory.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-32]: HttpRequestInterceptorList, HttpResponseInterceptorList
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-38]: Packages nio.impl.* are now impl.nio.*, same for examples.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-27]: I/O reactors can now accept a thread factory as an optional
  parameter.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-36]: Fixed #setHandlers() method and matching of request URIs
  with a query part in HttpRequestHandlerRegistry
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-28]: DefaultConnectingIOReactor now maintains a queue of connect
  requests and registers new sessions with the selector on the I/O thread.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-29] DefaultConnectingIOReactor changed to ensure IOExceptions
  are correctly propagated to the caller, if an exception is thrown while
  initializing a newly connected socket.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-24] Fixed bug in non-blocking connection implementations, which
  prevented the session buffer from being correctly flushed when the content
  coding process has been completed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-23] Fixed threading bug in DefaultConnectingIOReactor.
  Contributed by Asankha C. Perera <asankha at wso2.com>

Release 4.0 Alpha 3
-------------------

The third ALPHA version of HttpCore has been released. The ALPHA3 release
includes a number of API optimizations and improvements and introduces a set
of NIO extensions to the HttpCore API. NIO extensions can be used to build
HTTP services intended to handle thousands of simultaneous connections with
a small number of I/O threads.

* [HTTPCORE-15] Provided a interafce to access IP address of the local and
  remote end points.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [ HTTPCORE-14] Scheme, SocketFactory and SecureSocketFactory moved to
  HttpClient. Decoupled HttpHost and Scheme.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-13] Refactored HttpProcessor interface and related impl classes
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-11] Client connection interface no longer defines a specific
  method to open a connection. HTTP connections can now represent any
  abstract I/O transport such as those based on NIO API.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-10] Non-blocking (async) client-side I/O transport based on NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-9] Non-blocking (async) server-side I/O transport based on NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-7] ConnectionReuseStrategy interface changed to allow access
  to the HTTP execution context.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-6] Header implementation allowing for performance short-cuts
  when serializing and deserializing HTTP headers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-5] Header, HeaderElement, NameValuePair, RequestLine, StatusLine,
  HttpVersion changed to interfaces. API no longer contains any parsing and
  formatting code and does not imply any specific physical representation of
  HTTP messages and their elements.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 2
-------------------
This is a maintenance release that mostly fixes minor problems found since the
previous release. The upstream projects are strongly encouraged use this
release as a dependency while HttpCore undergoes another round of reviews
and optimization in the SVN trunk

Change Log:
---------
* [HTTPCORE-4] optional header and line length limits to contain OOME risks
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 1
-------------------
This release represents a complete redesign of the Jakarta Commons HttpClient
3.x API and a significant rewrite of the core HTTP components derived from
HttpClient 3.0 code base.

These components will form the foundation of the future releases of Jakarta
HttpClient and can also be used separately to build custom client- and
server-side HTTP services.