Release 3.0.1 ------------------- Changes since Release 3.0: * 38636 - Calling HttpState.clearCookies() is now safe from a different thread. Contributed by Peter Dolberg * 38385 - Fixed NPE when creating URI from scheme specific part with null fragment Contributed by Michele Vivoda * 38043 - Digest URI changed to include query parameters Contributed by Oleg Kalnichevski * 38004 - Fixed bug causing cyclic redirects when virtual host is set Contributed by Oleg Kalnichevski * 38139 - Calling deprecated MultiThreadedHttpConnectionManager.setMaxTotalConnections(int) had no effect Contributed by Ortwin Glueck * 37988 - Fixed bug in URI#toString() causing user name / password to stripped from the resultant String Contributed by Oleg Kalnichevski Release 3.0 ------------------- New features: ------------------- (1) Architecture * New preference architecture * Improved exception handling framework * Granular non-standards configuration and tracking * Improved HTTP Version configuration and tracking * Support for streaming entities * Support for tunneled HTTP proxies via the ProxyClient * Ability to abort execution of HTTP methods (2) Connection management * Support for closing idle connections * Support for JDK1.4 connect timeout through reflection * Support for connection manager shutdown (3) Authentication * Improved authentication framework * Plug-in mechanism for authentication modules * Interactive authentication support * Alternate authentication support (4) Cookie management * Cookie specification plug-in mechanism * 'Ignore cookies' cookie policy * Improved Netscape cookie support (5) Redirects * Cross-site redirect support ------------------- Changes since Release Candidate 4: * 37526 - Fixed incorrect processing of HTTP parameters with an empty name Contributed by Oleg Kalnichevski * 37256 - Fixed bug causing MultipartRequestEntity to miscalculate the total content length if any of the parts returns a negative content length value Contributed by Loïc Péron * 37197 - Preemptive auth flag no longer disregarded when tunneling SSL connections via a proxy Contributed by wynand * 37154 - UsernamePasswordCredentials.equals(null) no longer causes NPE Contributed by Oleg Kalnichevski * 37129 - HttpConnection changed to use a protocol socket factory registered for 'http' protocol instead of DefaultProtocolSocketFactory when connecting to a proxy to establish a secure tunnel Contributed by Oleg Kalnichevski Release 3.0 Release Candidate 4 ------------------- Changes since Release Candidate 3: * 36882 - Max connections per host setting did not work Contributed by Oleg Kalnichevski * 36791 - Fixed HttpConnection#isOpen flag concurrency problem Contributed by Jean-Marie White * 36339 - Request is no longer retried if preemptive authentication fails and Basic is the only supported authentication scheme advertised by the target server Contributed by Oleg Kalnichevski * 36372 - nonce-count in digest auth should not be quoted Contributed by Ortwin Glueck * 36369 - Custom Proxy-Connection header no longer gets overwritten Contributed by Oleg Kalnichevski * 36595 - Do not attempt to retry aborted methods Contributed by Oleg Kalnichevski * 36140 - ParameterParser changed to correctly differentiate between empty and null (no value) parameters Contributed by Oleg Kalnichevski * 35085 - HTTP 204 "NO CONTENT" response no longer results in dropped connection. Contributed by Ian Bray * 35944 - Connection always gets released back to the pool even if an unchecked exception is thrown in HttpMethod#releaseConnection method. Contributed by Oleg Kalnichevski * 35642 - Do not retry if host is unreachable. This ensures a connection timeout will be obeyed. Contributed by Ortwin Glueck * 35815 - SimpleHttpConnectionManager now logs warnings when it detects it is being used incorrectly. Contributed by Michael Becke Release 3.0 Release Candidate 3 ------------------- Changes since Release Candidate 2: * 35365 - Added #hashCode and #equals methods for Credentials implementations Contributed by Eric Johnson * 35322 - Stale connection check now correctly works with IBM JSSE/JRE 1.4.x Contributed by Oleg Kalnichevski * 35225 - Fixed a major problem with the browser compatibility policy leaking cookies to 3rd party domains (.mydomain.com -> .notmydomain.com) Contributed by Oleg Kalnichevski * 35328 - DateUtil#formatDate changed to US locale instead of system default Contributed by Yannick * 34960 - DigestScheme changed to take into account charset attribute when available (Known to be used by Microsoft implementation of the Digest auth scheme) Contributed by Oleg Kalnichevski * 35148 - HttpClient now correctly handles relative URIs beginning with a colon. Contributed by Gordon Mohr * 34961 - HttpClient now correctly handles escaped characters in HTTP header elements Contributed by Oleg Kalnichevski * 34780 - HttpClient now always overrides the host of HostConfiguration if an absolute request URI is given Contributed by Oleg Kalnichevski * 34740 - Connection with the proxy is not reopened if an proxy auth failure occurs while SSL tunnel is being established Contributed by Oleg Kalnichevski * 34721 - Virtual host setting is now correctly applied when parsing and matching cookies Contributed by Oleg Kalnichevski * 34583 - DateUtil.formatDate() changed to use GMT instead of the default timezone Contributed by Fred Bierhaus * 34459 - Always use the chunk encoding when request content length cannot be determined (is negative) Contributed by Oleg Kalnichevski * 34427 - Fixed the bug causing an IllegalStateException in AuthState triggered by the combination of preemptive proxy authentication and a cross-site redirect Contributed by Oleg Kalnichevski Release 3.0 Release Candidate 2 ------------------- Changes since Release Candidate 1: * 34255 - Preemptive authentication no longer causes NTLM auth scheme to fail Contributed by Michael Becke * 33720 - Fixed the problem with HttpMethod#getURI applying URL escaped encoding to already encoded URIs Contributed by Oleg Kalnichevski * 34262 - Fixed broken handling of responses that may not include an entity body (status code 204, 304) Contributed by Oleg Kalnichevski * ----- - Fixed broken InputStreamRequestEntity#isRepeatable method Contributed by Matthew-J Watson * 33677 - Fixed the bug preventing the HTTP retry handler from handling ConnectionExceptions Contributed by Oleg Kalnichevski * 33988 - All classes overriding Object#hashCode & Object#equals methods have been reviewed regarding their hashCode/equals contract compliance Contributed by Oleg Kalnichevski * 33947 - Exception in HttpConnection because of unchecked buffer size Contributed by Ortwin Glueck * 33856 - Fixed the problem with the credential-charset parameter not having an effect on the encoding of the NTLM credentials Contributed by Oleg Kalnichevski * 33541 - Fixed the problem with host level parameters having no effect on HTTP CONNECT methods Contributed by Oleg Kalnichevski * 33468 - HttpClient no longer flushes the request line and request headers prior to writing the request body if the 'expect: continue' handshake is not used Contributed by Peter Tolmachov Release 3.0 Release Candidate 1 ------------------- Changes since Beta 1: * 32833 - Cookie with domain .mydomain.com were not sent to host mydomain.com in the browser compatibility mode Contributed by David D. Kilzer * 33021 - Fixed the bug causing the circular redirect if different query parameters are used in the redirect location. Contributed by Ilya Kharmatsky * 32955 - Fixed the bug effectively disabling the stale connection check Contributed by Oliver Koell * 32835 - The two digit year greater than 20 no longer causes the cookie expiry date to be interpreted as a date between 1920 and 1999 Contributed by Oleg Kalnichevski * 32607 - Fixed the problem with ReflectionSocketFactory ignoring the local address of HostConfiguration Contributed by Oleg Kalnichevski * 32409 - HttpState now has new methods for clearing all cookies and credentials. Contributed by Oleg Kalnichevski * 32558 - Fixed retry count bug in DefaultMethodRetryHandler Contributed by Oleg Kalnichevski * 32333 - Connection is now closed upon "Connection: close" request, if the server does not include an explicit connection directive in the response. Contributed by Oleg Kalnichevski * 32765 - Fixed NullPointerException in HostConfiguration.setHost(Sting) Contributed by Stuart Herring * 32742 - Fixed the problem with SO_TIMEOUT parameter having no effect on the method level. Contributed by Ilya Kharmatsky Release 3.0 Beta 1 ------------------- Changes since Alpha 2: * 31929 - Added support for formatting dates. Deprecated DateParser in favor of DateUtil. Contributed by Michael Becke * ----- - HostConfiguration.isHostSet() and Hostconfiguration.isProxySet() have been deprecated. * 31981 - Fixed the bug causing an infinite loop in HttpMethodDirector when using SSL + proxy + host auth + keep alive off Contributed by Oleg Kalnichevski * 31607 - Catch SocketTimeoutException not InterruptedIOException when running in JRE >=1.4 Contributed by Oleg Kalnichevski * 31471 - HostConfiguration refactored Contributed by Oleg Kalnichevski * ----- - ContentLengthInputStream no longer supports mark() & reset() methods. Old broken implementation removed. Contributed by Eric Johnson Release 3.0 Alpha 2 ------------------- Changes since Alpha 1: * 10793 - Configurable default headers Contributed by Oleg Kalnichevski * 30652 - Configurable SO_LINGER Contributed by Oleg Kalnichevski * 31163 - CookieSpec classes made stateful Contributed by Oleg Kalnichevski * 21329 - Added input buffering to improve performance Contributed by Bjarne Rasmussen * 29897 - Connection output buffer is set to a value not greater than 2k Contributed by Oleg Kalnichevski * 29636 - MultiThreadedHttpConnectionManager now support configuring the maximum number of connections on a per host basis. Contributed by Michael Becke * 29874 - Deprecated old HTTP method retry handler based on HttpRecoverableException and replaced it with a new one that acts upon plain IOExceptions Contributed by Oleg Kalnichevski * 29883 - Fixed handling of multi-byte characters in the StringRequestEntity class Contributed by Oleg Kalnichevski * 29383 - Added method to delete closed connections from the connection pool Contributed by Michael Becke * 29549 - Split wire log into header and body parts Contributed by Michael Becke * 29540 - Fixed credentials scope matching algorithm in HttpState#matchCredentials. Contributed by Oleg Kalnichevski * 29439 - Cleaner interface to define authentication scope, handle credentials in HttpState. Contributed by Oleg Kalnichevski * 29377 - Cookies with names containing blanks or starting with $ rejected by RFC2109 spec only. Contributed by Oleg Kalnichevski Release 3.0 Alpha 1 ------------------- Changes compared to version 2: * 29265 - HttpConnection.isOpen() no longer logs closed connections as stale. * 28645 - Moved/added content type handling to the RequestEntity. Contributed by Michael Becke , Oleg Kalnichevski * 20288 - Added ability to abort execution of HTTP methods Contributed by Oleg Kalnichevski * 24154 - Socket timeout can be specified at the connection manager, connection or method level Contributed by Oleg Kalnichevski * 16124 - HTTP protocol version can be specified at the client, host or method level Contributed by Oleg Kalnichevski * 28728 - HttpUrl now accepts unescaped passwords Contributed by Michael Becke * 28626 - Fixed ArrayIndexOutOfBoundsException in HttpStatus.getStatusText() Contributed by Oleg Kalnichevski * 26070 - Added support for streaming entities Contributed by Michael Becke * 28566 - CookieSpec interface extended to expose path & domain matching methods; browser compatibility domain matching algorithm modified to mimic the (mis-)behavior of common browsers Contributed by Oleg Kalnichevski * 25372 - Added support for closing idle connections Contributed by Michael Becke , Oleg Kalnichevski * 28322 - Redesign of connect timeout logic; Added support for JDK1.4 connect timeout through reflection Contributed by Oleg Kalnichevski * 28151 - Added stand-alone support for tunneled HTTP proxies via the ProxyClient Contributed by Michael Sample , Michael Becke * 21216 - Fixed the problem of redirect 302 to the same URL causing max redirects exception: circular redirect check added; the circular redirect check is on per default and in lenient mode, is off in strict mode Contributed by Oleg Kalnichevski * 27589 - Added MultiThreadedHttpConnectionManager shutdown() and shutdownAll() Contributed by Michael Becke * 25529 - Redesign of HTTP authentication framework Contributed by Oleg Kalnichevski * Better implementation of ChunkedOutputStream: writes are buffered to an internal buffer (2048 default size); chunks are guaranteed to be at least as large as the buffer size (except for the last chunk) Contributed by Mohammad Rezaei , Goldman, Sachs & Co * HttpMethod#getResponseBody & HttpMethod#getResponseBodyAsString changed to propagate IOException to the caller instead of logging and discarding it Contributed by Oleg Kalnichevski * 10794 - Added interactive authentication support; Authentication realm key is now comprised of host name, port, realm name and authentication type Contributed by Oleg Kalnichevski * 15297 - Added ability to perform alternate authentication Contributed by Oleg Kalnichevski * 16881 - HttpClient made dependent on Commons-codec to perform Base64 and URL encoding/decoding Contributed by Michael Becke , Oleg Kalnichevski * 24560 - Fixed the problem of HttpClient looping endlessly while trying to retrieve status line Contributed by Christian Kohlschuetter * 24671 - Added support for configuring charsets in credentials and HTTP headers Contributed by Michael Becke * Plug-in mechanism for authentication modules Contributed by Oleg Kalnichevski * Added infrastructure to create test cases that involve use of a proxy Contributed by Ortwin Glueck * UserNamePasswordCredentials & NTCredentials made immutable Contributed by Oleg Kalnichevski * 24869 - DigestScheme now only accepts a challenge if all fields required by RFC 2617 are present Contributed by Ortwin Glueck * New framework for server based tests Contributed by Christian Kohlschuetter , Ortwin Glueck * Socket input stream now wrapped with a wrapper class that re-throws certain type of generic IO exceptions as HttpClient specific exceptions. Improved handling of 'used' connections (known to have successfully completed an I/O operation). Contributed by Oleg Kalnichevski * 24012 - Added IgnoreCookiesSpec. Contributed by Michael Becke * 24018 - Cookie and Authorization headers can now be set manually. Contributed by Oleg Kalnichevski * 21151 - Cookie specification plug-in mechanism Contributed by Oleg Kalnichevski * Reworked DigestScheme: the qop Parameter is parsed correctly and not just ignored; missing qop is handled correctly Contributed by Ortwin Glueck * 10790 - Implemented granular non-standards configuration and tracking. Contributed by Oleg Kalnichevski , Michael Becke , Roland Weber , Ortwin Glueck , Adrian Sutton * 15435 - Implemented new preference architecture. Contributed by Oleg Kalnichevski , Michael Becke , Roland Weber , Ortwin Glueck , Adrian Sutton * Deprecated the use of system properties: 'httpclient.useragent', 'httpclient.authentication.preemptive'. * Refactored NameValuePair#equals method. Contributed by Ortwin Glueck * 16729 - Refactored retry/redirect/authentication logic. Contributed by Michael Becke * Added support for disabling HttpConnection.isStale() Contributed by Michael Becke * 10791 - Improved HTTP Version configuration and tracking. Contributed Oleg Kalnichevski , Laura Werner , Michael Becke * 21880 - Content-Length & Transfer-Encoding request headers formerly set by abstract HttpMethodBase class are handled by entity enclosing methods. Contributed by Oleg Kalnichevski * 17947 - HttpMethod#setURI method added. Contributed by Oleg Kalnichevski * 19618 - URI constructors refactored. Contributed by Oleg Kalnichevski * 11240 - Fixed the problem of cookies with ',' in the value string not parsed correctly in some cases Contributed by Oleg Kalnichevski * 21323 - Support for large(long) content added Contributed by Michael Becke * 19868 - Exception handling framework reworked. Contributed by Adrian Sutton , Laura Werner , Oleg Kalnichevski , Michael Becke * 21210 - Header parser completely rewritten. Improved handling of Netscape draft compatible cookies Contributed by Oleg Kalnichevski