-
Notifications
You must be signed in to change notification settings - Fork 349
/
RELEASE_NOTES.txt
3629 lines (2446 loc) · 142 KB
/
RELEASE_NOTES.txt
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.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 <[email protected]>
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 <[email protected]>
* 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>