forked from apache/httpcomponents-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RELEASE_NOTES.txt
2856 lines (1943 loc) · 114 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.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>