File: RELEASE_NOTES.txt

package info (click to toggle)
httpcomponents-core 4.1.4-2.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,948 kB
  • sloc: java: 38,330; xml: 4,650; makefile: 17
file content (787 lines) | stat: -rw-r--r-- 35,849 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
Release 4.1.4
-------------------

This is a maintenance release that fixes a number of bugs found since 4.1.3. It is also likely 
to be the last release in the 4.1.x branch.

* [HTTPCORE-286] Canceled I/O session can cause an IllegalStateException in BaseIOReactor#validate
  leading to an abnormal termination of the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-257] Fixed incorrect results produced by DefaultConnectionReuseStrategy when handling 
  response messages whose content entity has been decoded or modified by a protocol interceptor. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-283] Workaround for a bug causing termination of the I/O reactor in case of exception 
  thrown by NHttpServiceHandler#requestReceived or NHttpClientHandler#responseReceived
  methods. A more comprehensive fix for the bug applied to the 4.2 branch.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-281] ResponseConnControl protocol interceptor does not correctly populate connection
  persistence control headers when sending a HTTP/1.1 response message in response to a HTTP/1.0 
  request message.
  Contributed by William R. Speirs <bill.speirs at gmail.com>

* [HTTPCORE-282] The default value of the internal event mask of newly created non-blocking I/O 
  is not correctly initialized, which causes the READ interest bit to get cleared in the interest 
  op queuing mode unless the event mask is explicitly reset.
  Contributed by Sadeep Jayasumana <sadeep at wso2.com> and Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-268] Handle runtime exceptions thrown by SSLEngine.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.3
-------------------

This is an emergency release that fixes a severe regression in the non-blocking SSL I/O code 
introduced in release 4.1.2.

* [HTTPCORE-266] SSLIOSession does not correctly terminate if the opposite end shuts down connection 
  without sending a 'close notify' message causing an infinite loop in the I/O dispatch thread.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.2
-------------------

This is a patch release that fixes a number of bugs found in the previous version.

Please note that several classes and methods deprecated between versions 4.0-beta1 and 4.0 GA 
(more than two years ago) will also be removed in the 4.2 branch.

Users of 4.0.x versions are advised to upgrade and replace deprecated API calls following
recommendations in javadocs.  

* [HTTPCORE-261] IOSession#setSocketTimeout() method does not reset the timeout count. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-260] Non-blocking SSL I/O session can terminate prematurely causing message body 
  truncation when message content is chunk coded and the connection is closed on the opposite end. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1.1
-------------------

This is a patch release that fixes a number of non-critical issues found since release 4.1.

This release marks the end of support for Java 1.3. As of release 4.2 HttpCore will require 
Java 1.5 for all its components. 

Please note that several classes and methods deprecated between versions 4.0-beta1 and 4.0 GA 
(more than two years ago) will also be removed in the 4.2 branch.

Users of 4.0.x versions are advised to upgrade and replace deprecated API calls following
recommendations in javadocs.  

* In case of an unexpected end of stream condition (the peer closed connection prematurely) 
  truncated Content-Length delimited message bodies will cause an I/O exception. Application
  can still choose to catch and ignore ConnectionClosedException in order to accept partial 
  message content.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-255]: Fixed resource management in InputStreamEntity#writeTo()
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-254]: Erratic results from metrics (sebb)

* [HTTPCORE-242]: Fixed NPE in AsyncNHttpClientHandler caused by an early response to an
  entity enclosing request.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.1
-------------------

This is the first stable (GA) release of HttpCore 4.1. This release provides a compatibility mode
with JREs that have a naive (broken) implementation of SelectionKey API and also improves
compatibility with the Google Android platform. There has also been a number of performance
related improvements and bug fixes in both blocking and non-blocking components.

All upstream projects are encouraged to upgrade.

HttpCore is a set of low level HTTP transport components that can be used to build custom
client and server side HTTP services with a minimal footprint. HttpCore supports two I/O
models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O
model based on Java NIO.  The blocking I/O model may be more appropriate for data intensive,
low latency scenarios, whereas the non-blocking model may be more appropriate for high latency
scenarios where raw data throughput is less important than the ability to handle thousands of
simultaneous HTTP connections in a resource efficient manner.

* [HTTPCORE-240]: DefaultConnectingIOReactor leaks a socket descriptor if the session request fails.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-239]: The ChunkEncoder could request for a negative buffer limit causing an
  IllegalArgumentException.
  Contributed by Asankha Perera <asankha at apache.org>

* [HTTPCORE-236]: SSLIOSession#isAppInputReady() does not check the status of the session input
  buffer.
  Contributed by Dmitry Lukyanov <dlukyanov at ukr.net>

* [HTTPCORE-233]: EntityUtils#toString() and EntityUtils#toByteArray() to return null if
  HttpEntity#getContent() is null
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-231] Fixed incorrect handling of HTTP entities by non-blocking LengthDelimitedDecoder
  when the Content-Length value is larger than Integer.MAX_VALUE.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1-BETA2
-------------------

This is the second BETA release of HttpCore 4.1. This is mainly a bug fix release that addresses
a number of non-critical bugs.

The most significant change in this release is deprecation of the HttpEntity#consumeContent()
method and streamlining of connection management and resource deallocation by HTTP entities.
Please refer to the javadocs for details.

* [HTTPCORE-229] AbstractSessionInputBuffer#readLine(CharArrayBuffer) returns incorrect
  number of characters read by the method when using non-standard HTTP element charset.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Non-blocking connections can trigger #responseReady / #requestReady events by mistake
  when the underlying session is already closed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-228] Fixed NPE in AsyncNHttpServiceHandler caused by entity enclosing requests
  if no matching request handler can be found.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-227] Fixed incorrect request / response count by non-blocking connections.
  Contributed by Harold Lee <harold at hotelling.net>

* [HTTPCORE-226] Improved compatibility of NIO components with Google Android.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* ByteArrayBuffer, CharArrayBuffer, BasicHeader, BufferedHeader, HeaderGroup, BasicRequestLine,
  BasicStatusLine made Serializable.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.1-BETA1
-------------------

This is the first BETA release of HttpCore 4.1. This release finalizes the API introduced in the
4.1 development branch. It also fixes a number of bugs discovered since the previous release and
delivers a number of performance optimizations in the blocking HTTP transport components.
The blocking HTTP transport is expected to be 5% to 10% faster compared to previous releases.

* [HTTPCORE-222] Fixed Import-Package in the OSGi META-INF
  Contributed by Willem Jiang <willem.jiang at gmail.com>

* [HTTPCORE-177] Reduce intermediate data buffering by reading large chunks of data directly from
  the underlying socket stream. This results in improved performance of blocking read operations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-220] IdentityDecoder fails to detect end of stream when using file channels.
  Contributed by Asankha C. Perera <asankha at apache.org>

* [HTTPCORE-218] ChunkEncoder#write method no longer returns incorrect value if
  the data to write is greater than the size of the internal buffer used by the encoder.
  Contributed by Richie Jefts <rjefts at gmail.com>

* [HTTPCORE-209] Added parameter to set SO_REUSEADDR on sockets bound to a local address.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-207] SocketHttp*Connection classes can leak sockets if the connection is half-closed
  Contributed by David Koski <david_koski at mac.com>

Release 4.1-ALPHA1
-------------------

This is the first public release from the 4.1 branch of HttpCore. This release adds a number of
new features, most notable being introduction of compatibility mode with IBM JREs and other JREs
with naive (broken) implementation of SelectionKey API.

Please note new classes and methods added in the 4.1 branch are still considered API unstable.

* Ensure that an attempt is made to close out all active sessions gracefully in case of an abnormal
  shutdown of the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-201] OSGi Export-Package to specify release version
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-183] Added Thread-safe implementations of HttpParams and HttpProcessor -
  SyncBasicHttpParams and ImmutableHttpProcessor classes
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-199] ContentInputStream implements InputStream#available().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-195] Truncated chunk-coded streams can now be tolerated by catching and discarding
  TruncatedChunkException.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-155] Compatibility mode with IBM JRE and other JREs with naive (broken) implementation
  of SelectionKey.
  Contributed by Marc Beyerle <marc.beyerle at de.ibm.com> and Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-191] Blocking HTTP connections are now capable of correctly preserving their internal
  state on SocketTimeoutExceptions, which makes it possible to continue reading from the connection
  after a socket timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-190] ChunkedInputStream is now capable of correctly preserving its internal state on
  SocketTimeoutExceptions, which makes it possible to continue reading from the stream after a
  socket timeout.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0.1
-------------------

This is a patch release addressing a number of issues discovered since the 4.0 release. Users
of NIO module are advised to upgrade.

* [HTTPCORE-198] CONNECT request includes Host header for HTTP 1.1 connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-196] SSLIOSession now unwraps encrypted data more aggressively eliminating long
  pauses when receiving data over non-blocking connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-197] Fixed bug causing the non-blocking ChunkDecoder to report some data stream as
  truncated under special conditions.
  Contributed by Denis Rogov <denrogov at gmail.com> and Oleg Kalnichevski <olegk at apache.org>

* SSLIOSession#isAppOutputReady and SSLIOSession#isAppInputReady no longer ignore the application
  event mask causing I/O event notifications for unrequested type of events.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-193] Fixed problem with SSLIOSession incorrectly handling of end-of-stream condition.
  Contributed by Asankha C. Perera <asankha at apache.org> and Oleg Kalnichevski <olegk at apache.org>


Release 4.0
-------------------

This is the first stable (GA) release of HttpCore 4.0. This release mainly improves the
documentation and fixes a few minor bugs reported since the previous release. HttpCore
now comes with a complete tutorial presenting an in-depth coverage of the API.

HttpCore is a set of low level HTTP transport components that can be used to build custom
client and server side HTTP services with a minimal footprint. HttpCore supports two I/O
models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O
model based on Java NIO.  The blocking I/O model may be more appropriate for data intensive,
low latency scenarios, whereas the non-blocking model may be more appropriate for high latency
scenarios where raw data throughput is less important than the ability to handle thousands of
simultaneous HTTP connections in a resource efficient manner.

* [HTTPCORE-180] Fixed NPE in standard I/O event dispatchers when
  IOEventDispatch#disconnected fires before the session was fully initialized
  (IOEventDispatch#connected was not called).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-175] Chunk decoders no longer accept truncated chunks as valid input.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 3
-------------------

The third BETA version of HttpComponents Core has been released. This is a
maintenance release, which addresses a number of issues discovered since the
previous release.

The only significant new feature is an addition of an OSGi compliant bundle
combining HttpCore and HttpCore NIO jars.

* [HTTPCORE-173] Tolerate missing closing chunk if the chunk coded content
  is terminated by the end of stream (EOF) condition.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-174] Position is incremented twice in ContentLengthInputStream#skip(long)
  Contributed by Ildar Safarov <ildar.safarov at gmail.com>

* [HTTPCORE-125] OSGi bundle containing HttpCore & HttpCore NIO jars.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* CancelledKeyException thrown in BaseIOReactor#validate() no longer causes
  a premature I/O reactor shutdown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-172] Added #close() method to SharedInputBuffer and
  SharedOutputBuffer. The purpose of the new method is to close the buffer
  in case of normal / orderly termination of the underlying HTTP connection.
  Use #shutdown() method to force-close the buffer in case of abnormal /
  exceptional termination of the underlying connection.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-170] Fixed race condition in SharedOutputBuffer.
  Contributed by Jason Walton <Jason.Walton at alcatel-lucent.com>

* [HTTPCORE-169] Fixed bug causing connecting I/O reactors to shut down due to
  ClosedChannelException if a pending session request is cancelled before the new
  channel has been registered with the selector.
  Contributed by Anders Wallgren <anders_wallgren at alum.mit.edu>

* [HTTPCORE-167] Fixed handling the end of stream (EOF) condition in the #isStale()
  check of blocking HTTP connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-166] NIO reactors now maintain an audit log of fatal exceptions,
  which can be used to examine the cause and problems experienced during
  the shutdown process.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-165] Improved handling of CancelledKeyException in I/O reactors
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 2
-------------------

The second BETA version of HttpComponents Core has been released. This release
adds a number of improvements to the NIO components, most notable being improved
asynchronous client side and server side protocol handlers.

There has been a number of important bug fixes in HttpCore NIO module, whereas
HttpCore base module has had very few changes.

All upstream projects dependent on HttpCore NIO are strongly advised to upgrade.

* [HTTPCORE-163] Fixed AbstractMultiworkerIOReactor#execute() to correctly
  propagate the original I/O exception in case of an abnormal termination.
  Contributed by Patrick Moore <patmoore at ieee.org>

* Changed behavior of IdentityDecoder & LengthDelimitedDecoder to throw
  an IOException if data is attempted to be written beyond the length
  of a FileChannel.  Previously would write nothing.
  Contributed by Sam Berlin <sberlin at apache.org>

* Fixed bug in LengthDelimitedDecoder & IdentityDecoder that caused transfers
  to a FileChannel to overwrite arbitrary parts of the file, if data was
  buffered in SessionInputBuffer.
  Contributed by Sam Berlin <sberlin at apache.org>

* Fixed concurrency bug in the ThrottlingHttpServerHandler protocol handler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fixed bug in SharedInputBuffer that caused input events to be
  incorrectly suspended.
  Contributed by Asankha C. Perera <asankha at wso2.com>

* [HTTPCORE-150] Entity implementation that serializes a Java object
  Contributed by Andrea Selva <selva.andrea at gmail.com>

* [HTTPCORE-157] ChunkedOutputStream#flush() now behaves consistently with the
  specification of OutputStream#flush().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-147] Fixed handling of requests with partially consumed content
  in ThrottlingHttpServiceHandler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-92] ChunkEncoder splits input data larger than available space
  in the session output buffer into smaller chunks instead of expanding
  the buffer.
  Contributed by Andrea Selva <selva.andrea at gmail.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-149] I/O reactors now count period of inactivity since the
  time of the last read or write operation. Previously only read
  operations resulted in timeout counter reset.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-148] Improved asynchronous server and client HTTP protocol
  handler implementations.
  Contributed by Sam Berlin <sberlin at gmail.com>

* [HTTPCORE-143] Ensure the underlying channel is closed if the session
  request is canceled or times out.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-140] Fixed timeout handling in ThrottlingHttpServiceHandler.
  Contributed by Lorenzo Moretti <moznerol at hotmail.com> and
  Oleg Kalnichevski <olegk at apache.org>



Release 4.0 Beta 1
-------------------

The first BETA version of HttpComponents Core has been released. This release
can be considered a major milestone, as it marks the end of API instability
in HttpCore. As of this release the API compatibility between minor releases
in 4.x codeline will be maintained.

This release includes several major improvements such as enhanced HTTP message
parsing API and optimized parser implementations, Java 5.0 compatibility
for HttpCore NIO extensions. Upstream projects are strongly encouraged to
upgrade to the latest release.

The focus of the development efforts will be gradually shifting towards
providing better test coverage, documentation and performance optimizations.

Changelog:
----------

* [HTTPCORE-141] Session request timeout in DefaultConnectingIOReactor
  invalidates the request.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-137] DefaultHttpRequestFactory extended to support all methods
  specified in RFC 2616 (except CONNECT).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Replaced HTTP parameter linking with a simple child/parent stack.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-134] all serialVersionUID attributes are private
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-133] Clone support for basic HTTP message elements and
  non-streaming entities.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-127] Improved API for lifecycle management of listening I/O
  reactors. One can now suspend and resume listener endpoints.
  Contributed by Asankha C. Perera <asankha at wso2.com>

* [HTTPCORE-112] DefaultConnectionReuseStrategy interprets token sequences
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-122] new interface TokenIterator and basic implementation
  Contributed by Roland Weber <rolandw at apache.org>

* HttpCore NIOSSL classes moved to HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HttpCore NIO ported to Java 1.5.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-130] Fixed over-synchronization bug leading to a thread deadlock
  condition in SSL IOEventDispatch implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-37] HttpParams beans
  Contributed by Stojce Dimski <sdmiski at yahoo.it>

* [HTTPCORE-128] Simplified injection of custom NIO connection implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-126] Improved HTTP message parsing API and optimized parser
  implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Do not include "Connection: close" to 500 responses per default.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-121] new interface HeaderElementIterator
  Contributed by Andrea Selva <selva.andrea at gmail.com>

* [HTTPCORE-123] Fixed problem with SSLSession losing buffered data, if the
  connection has been closed by the peer.
  Contributed by Risto ReinpƵld <risto.reinpold at gmail.com>



Release 4.0 Alpha 6
-------------------

The sixth ALPHA version of HttpComponents Core has been released. This release
sports an improved message parsing and formatting API in the base module and
lots of incremental improvements and bug fixes in the NIO and NIOSSL modules.
Based on the improved API, it is now possible to send and receive SIP messages
with HttpComponents Core.

HttpCore is now feature complete and we are planning to freeze the public APIs
as of next release (BETA1).

* [HTTPCORE-120] new interface HeaderIterator, available from HttpMessage
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-118] Purge closed sessions prior to opening new ones. This should
  reduce chances of running out of memory when opening and closing lots of
  NIO connections in a tight loop.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-117] Fixed bug preventing protocol handlers from closing timed out
  NIO connection when pending output (output session buffer is not empty).
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-86] Allow for optional handling of runtime exceptions
  thrown by protocol handlers to ensure the I/O dispatch thread
  remains running.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-116] moved parameter names to interfaces
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-109] Improved shutdown process of the I/O reactors in NIO modules.
  I/O reactors now attempt to terminate connections gracefully before shutting
  down the underlying socket channels.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-107] allow sending and receiving of SIP messages
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-114]: Fixed incorrect handling of the end-of-stream condition
  in SSLIOSession.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-110] refactored message parsing and formatting logic
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-113] Removed unnecessary target hostname resolution from
  non-blocking client protocol handlers.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-108] Close all channels registered with the I/O reactor during
  shutdown. Fixed the problem with DefaultListeningIOReactor not releasing
  socket ports until JVM is restarted.
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-106] Pluggable HTTP message parsers and message writers
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-105] Consistent class names in base and NIO modules
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-100] revised HttpContext hierarchy
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-103] NIO connections now attempt to consume all available session
  data while parsing HTTP messages. This can  potentially improve performance
  of non-blocking SSL connections.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-102] Exceeding of maximum line length limit detected late
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-21] Transport and connection metrics
  Contributed by Andrea Selva <selva.andre at gmail.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-91] new interceptor RequestDate, renamed constants in protocol.HTTP
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-90] Version detection based on build-time properties
  Contributed by Oleg Kalnichevski <olegk at apache.org> and
  Roland Weber <rolandw at apache.org>

* [HTTPCORE-88] Added convenience methods to HttpRequestInterceptorList,
  HttpResponseInterceptorList interfaces
  Contributed by Andrea Selva <selva.andre at gmail.com>

* [HTTPCORE-89]: Fixed bug in DefaultConnectingIOReactor causing incorrect
  handling of local (immediate) connections on some platforms (affects Sun
  Solaris 2.9 / Sparc and likely other Solaris 2.x platforms)
  Contributed by Sam Berlin <sberlin at gmail.com>

Release 4.0 Alpha 5
-------------------

The fifth ALPHA version of HttpComponents Core has been released. This release
delivers a number of incremental improvements across the board in all modules
and adds several performance oriented features such as ability to transfer
data directly between a file and a socket channels.

HttpCore is almost fully feature complete now and we are likely to freeze
the public APIs as of next release (BETA1).

* [HTTPCORE-87] RuntimeExcpetions thrown in I/O worker threads are now correctly
  propagated to the I/O reactor.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-84]: Removed DateUtils/DateParseException from core.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-63]: Made I/O select interval configurable for all default I/O
  reactor implementations.
  Contributed by Oleg Kalnichevski <olegk at apache.org> and
  Anders Wallgren <anders_wallgren at alum.mit.edu>

* [HTTPCORE-82]: Revised linking of HttpParams to reduce potential for misuse.
  Method #setDefaults() removed from the HttpParams interface.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-81]: Maximum line length and maximum header counts parameters are now
  correctly enforced in both base and NIO modules. Fixed maximum line length check
  when parsing folded header lines.
  Contributed by Steffen Pingel <spingel at limewire.com>

* Added HTTP client handler implementation that allocates fixed size content
  buffers upon initialization and is capable of throttling the rate of I/O events
  in order to make sure those content buffers do not get overflown.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-76]: Added IOSession#shutdown() method intended to force-close
  I/O sessions (primarily needed to terminate hung SSL connections).
  Contributed by Sandeep Tamhankar <sandman at electric-cloud.com>

* [HTTPCORE-78]: Added ByteBufferAllocator interface that can be used to apply
  different ByteArray allocation strategies to session and content buffers.
  Use heap bound implementation for short-lived or variable in length (requiring
  frequent content re-allocation) buffers.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-77]: The result of CharsetDecoder#decode() and CharsetEncoder#encode()
  was not checked for errors resulting in an infinite loop in
  SessionInputBuffer#readLine() and SessionOutputBuffer#writeLine()
  when malformed characters were processed.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-71]: HttpParams can be copied.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-75]: DefaultNHttpServerConnection and DefaultNHttpClientConnection
  now correctly terminate the underlying I/O session when closed.
  BufferingHttpServiceHandler now correctly applies connection keep-alive
  strategy when sending a response with no content body.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-73]: Fixed bug preventing NHttpServiceHandler#responseReady and
  NHttpClientHandler#requestReady events from being fired if the HTTP message
  has no content body.
  Contributed by Steffen Pingel <spingel at limewire.com>

* [HTTPCORE-67]: Improved event listener interface
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-43]: Support for FileChannel#transferFrom() and
  FileChannel#transferTo() methods. Direct coping from and to FileChannel is
  expected to improve performance of file bound operations
  Contributed by Andrea Selva <selva.andre at gmail.com>

* [HTTPCORE-66]: Fixed handling of HTTP HEAD methods
  Contributed by Steffen Pingel <spingel at limewire.com> and
  Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-58]: NIO HTTP connections changed to throw checked
  ConnectionClosedException instead of unchecked IllegalStateException when
  an attempt is made to perform an I/O operation on a closed conection
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-56]: DefaultConnectingIOReactor no longer terminates due to a
  CancelledKeyException, if a session request gets canceled before selection
  key is fully initialized.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 4
-------------------

The forth ALPHA version of HttpComponents Core has been released.
The ALPHA4 release fixes a number of bugs and adds a number of
improvements to HttpCore base and HttpCore NIO extensions.
HttpCore NIO can be used to build HTTP services intended to handle
thousands of simultaneous connections with a small number of I/O
threads. This release also introduces NIOSSL extensions that can be
used to extend HttpCore non-blocking transport components with
ability to transparently encrypt data in transit using SSL/TLS protocol.

* [HTTPCORE-49]: DefaultConnectingIOReactor can now correctly handle
  unresolved socket addresses. It no longer terminates with the
  UnresolvedAddressException runtime exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-42]: Added server side API for the expectation verification.
  Improved support for the 'expect: continue' handshake in HttpCore and
  HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-26]: Added SSL support for HttpCore NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-40]: API classes no longer reference impl classes in module-main.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-39]: Refactored HttpStatus, spun off [English]ReasonPhraseFactory.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-32]: HttpRequestInterceptorList, HttpResponseInterceptorList
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-38]: Packages nio.impl.* are now impl.nio.*, same for examples.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-27]: I/O reactors can now accept a thread factory as an optional
  parameter.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-36]: Fixed #setHandlers() method and matching of request URIs
  with a query part in HttpRequestHandlerRegistry
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-28]: DefaultConnectingIOReactor now maintains a queue of connect
  requests and registers new sessions with the selector on the I/O thread.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-29] DefaultConnectingIOReactor changed to ensure IOExceptions
  are correctly propagated to the caller, if an exception is thrown while
  initializing a newly connected socket.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-24] Fixed bug in non-blocking connection implementations, which
  prevented the session buffer from being correctly flushed when the content
  coding process has been completed.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-23] Fixed threading bug in DefaultConnectingIOReactor.
  Contributed by Asankha C. Perera <asankha at wso2.com>

Release 4.0 Alpha 3
-------------------

The third ALPHA version of HttpCore has been released. The ALPHA3 release
includes a number of API optimizations and improvements and introduces a set
of NIO extensions to the HttpCore API. NIO extensions can be used to build
HTTP services intended to handle thousands of simultaneous connections with
a small number of I/O threads.

* [HTTPCORE-15] Provided a interafce to access IP address of the local and
  remote end points.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [ HTTPCORE-14] Scheme, SocketFactory and SecureSocketFactory moved to
  HttpClient. Decoupled HttpHost and Scheme.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-13] Refactored HttpProcessor interface and related impl classes
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-11] Client connection interface no longer defines a specific
  method to open a connection. HTTP connections can now represent any
  abstract I/O transport such as those based on NIO API.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-10] Non-blocking (async) client side I/O transport based on NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-9] Non-blocking (async) server side I/O transport based on NIO.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-7] ConnectionReuseStrategy interface changed to allow access
  to the HTTP execution context.
  Contributed by Roland Weber <rolandw at apache.org>

* [HTTPCORE-6] Header implementation allowing for performance short-cuts
  when serializing and deserializing HTTP headers.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCORE-5] Header, HeaderElement, NameValuePair, RequestLine, StatusLine,
  HttpVersion changed to interfaces. API no longer contains any parsing and
  formatting code and does not imply any specific physical representation of
  HTTP messages and their elements.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 2
-------------------
This is a maintenance release that mostly fixes minor problems found since the
previous release. The upstream projects are strongly encouraged use this
release as a dependency while HttpCore undergoes another round of reviews
and optimization in the SVN trunk

Changelog:
---------
* [HTTPCORE-4] optional header and line length limits to contain OOME risks
  Contributed by Oleg Kalnichevski <olegk at apache.org>

Release 4.0 Alpha 1
-------------------
This release represents a complete redesign of the Jakarta Commons HttpClient
3.x API and a significant rewrite of the core HTTP components derived from
HttpClient 3.0 code base.

These components will form the foundation of the future releases of Jakarta
HttpClient and can also be used separately to build custom client- and
server-side HTTP services.