-
Notifications
You must be signed in to change notification settings - Fork 351
Expand file tree
/
Copy pathRELEASE_NOTES.txt
More file actions
4039 lines (2716 loc) · 157 KB
/
RELEASE_NOTES.txt
File metadata and controls
4039 lines (2716 loc) · 157 KB
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
Release 5.5-alpha1
------------------
This is the first ALPHA release in the 5.5 release series that improves
performance and robustness of connection pool implementations, further
improves HTTP/2 specification conformance and introduces Jackson 2 JSON
message bindings.
This release also includes all the fixes from the stable 5.4 branch.
Notable changes and features included in the 5.5 series:
* Connection pool implementation improvements.
* HTTP message stream APIs and support for HTTP/2 message stream timeout.
* SSLContexts to respect system properties by default.
* Cap pending HTTP/2 request commands per connection.
* HPACK RFC 7540 / RFC 7541 / HTTP/2 RFC 9113 conformance improvements.
Compatibility notes:
* HTTP requesters and servers take into account SSL/TLS system properties
by default.
Change Log
-------------------
* Validate HEADERS priority self-dependency (#652).
Contributed by Arturo Bernal <abernal at apache.org>
* HPACK: Fix HPACK table size update sequencing (#651).
Contributed by Arturo Bernal <abernal at apache.org>
* Fix lease timeout race to prevent pool entry leak (#649).
Contributed by Arturo Bernal <abernal at apache.org>
* LaxConnPool: Deallocate pool entry upon discarding expired connection.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* HTTP/2 RFC 9113 conformance2: ignore unused PADDED flag on non-padded
frames (#640).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: enforce strict 3-digit :status pseudo-header (#639).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2 RFC 9113 conformance: Enforce RST_STREAM payload length regardless
of stream existence (#638).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: validate pseudo-headers in inbound request trailers (#637).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2 RFC 9113 conformance: require peer SETTINGS as first frame (#636).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: validate HEADERS PRIORITY payload length (#635).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2 RFC 9113 conformance: handle zero WINDOW_UPDATE increment (#634).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: ignore reserved MSB in 31-bit fields (#633).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: tighten SETTINGS validation (#632).
Contributed by Arturo Bernal <abernal at apache.org>
* Enforce ALPN when forcing HTTP/2 over TLS (#631).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: fix frame header parsing and validate SETTINGS ACK length (#628).
Contributed by Arturo Bernal <abernal at apache.org>
* HPACK: reject integer decoding overflow (#627).
Contributed by Arturo Bernal <abernal at apache.org>
* HPACK RFC 7541 conformance: enforce table size update sequencing (#626).
Contributed by Arturo Bernal <abernal at apache.org>
* HPACK RFC 7540 / RFC 9113 conformance: HPACK decode failures must be treated
as connection errors (COMPRESSION_ERROR) (#625).
Contributed by Arturo Bernal <abernal at apache.org>
* Handle unknown HTTP/2 frame types gracefully (#624)
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: Reject pseudo-headers in inbound and outbound trailers (#623)
Contributed by Arturo Bernal <abernal at apache.org>
* Validate all TE header instances for HTTP/2 request conformance. (#620)
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2: validate Host vs `:authority` strictly (#622)
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2 RFC 9113 conformance: Reject Proxy-Connection header in HTTP/2 response
conformance (#621).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTP/2 RFC 9113 conformance: Reject duplicate :authority pseudo-header in HTTP/2
request conversion (#619).
Contributed by Arturo Bernal <abernal at apache.org>
* HTTPCORE-794: Fix parseLenient to ignore illegal charset names (#618).
Contributed by Arturo Bernal <abernal at apache.org>
* Provide a more flexible CharSequenceAsyncEntityConsumer in addition to
StringAsyncEntityConsumer.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Server and client-side async execution pipeline assemblers.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Handle `:protocol` for extended CONNECT (#613).
Contributed by Arturo Bernal <abernal at apache.org>
* `Message` class to use Java record naming convention.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Jackson 2 based JSON message bindings.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* LaxConnPool: Prevent integer overflow in #getTotalStats.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* LaxConnPool: Loop over expired connections and discard expired ones as they
are discovered, instead of returning them.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* StrictConnPool: Fix FIFO implementation.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* SSLContexts: Respect system properties by default.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* HTTP/2: per-stream idle timeout (#581).
Contributed by Arturo Bernal <abernal at apache.org>
* Bug fix: Corrected exception propagation in protocol negotiators' exception
handling code.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Fix SOCKS handshake to fail on EOF (#604).
Contributed by Arturo Bernal <abernal at apache.org>
* Bug fix: Handle CancelledKeyException thrown by the abort method of the H2 stream.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* ComplexCancellable: Fix race condition.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* Add RFC 7639 canonical percent codec for ALPN protocol identifiers (#596).
Contributed by Arturo Bernal <abernal at apache.org>
* Cap pending HTTP/2 request commands per connection (#592).
Contributed by Arturo Bernal <abernal at apache.org>
* Disable settings_push_enable on the H2Config for H2ServerBootstrap (#591).
Contributed by CoolTomatos <24667806+CoolTomatos at users.noreply.github.com>
* MonitoringResponseOutOfOrderStrategy: Always perform a blocking read to check
for data.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* Bug fix: corrected exception propagation to individual H2 streams in case of
an unexpected error with the H2 connection.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Added timeout setter to `StreamControl`.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Add ConnPoolListener support to RouteSegmentedConnPool (#586).
Contributed by Arturo Bernal <abernal at apache.org>
* Deflake RouteSegmentedConnPool slow disposal timing (#584).
Contributed by Arturo Bernal <abernal at apache.org>
* Improved HTTP message stream control API.
Contributed by Oleg Kalnichevski <olegk@apache.org>
* Fix validation of 0/8 IPv4 addresses.
Contributed by Ryan Schmitt <rschmitt at apache.org>
* Ensure the connection is closed immediately on socket timeout.
Contributed by Alexis Le Dantec <aledantec at palantir.com>
* RFC6874 zone IDs with minimal parsing Bracket/encode only.
Contributed by Arturo Bernal <abernal at apache.org>
* Accept leading zeros in IPv4-mapped IPv6 (#568).
Contributed by Arturo Bernal <abernal at apache.org>
* Relax pattern for mapped IPv4 octets (≤255); standalone IPv4 rules unchanged.
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.
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.
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.