CONTRIBUTIONS & CHANGE HISTORY
==============================

23-08-2018  - v4.4.1
             * Fixes to TLS socket handling (PR#163)
             * Fix ipv6 address family handling (PR#155)
             * Don't send messages to closed/inactive connections (PR#152)

28-01-2017 - v4.4
             * Fixes to SOCKS over SSL processing
             * Added stream_full_chunks option
             * Merged pull requests 145, 151

07-06-2016 - v4.3
             * Adopted erlang.mk for compiling. I find it easier to understand
               how 'make' behaves compared to rebar. This repo can still be built
               using rebar for those who prefer it
             * Removed references to lager. Introduced configurable logging function
             * Fixed an issue where the calling process was getting an extra
               spurious timeout message when the request was timing out

19-04-2016 - v4.2.4
             * Fixed travis-ci build as it was failing in running tests. 
               No code changes to ibrowse

19-04-2016 - v4.2.3
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/143
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/142
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/139
             * Fixed behaviour of option preserve_status_line

25-11-2015 - v4.2.2
             * Fix to ibrowse.app.src to enable publishing using Hex

25-11-2015 - v4.2.1
             * Merged pull request https://github.com/cmullaparthi/ibrowse/pull/132
             * Merged pull request https://github.com/cmullaparthi/ibrowse/pull/137

28-09-2015 - v4.2
             * Merged long pending improvements to pipelining
               https://github.com/cmullaparthi/ibrowse/pull/123
             * Merged pull request https://github.com/cmullaparthi/ibrowse/pull/131

03-08-2015 - v4.1.2
             * R18 compatibility fix
               https://github.com/cmullaparthi/ibrowse/issues/129
             * Add max_attempts option
               https://github.com/cmullaparthi/ibrowse/pull/125
             * Fix for https://github.com/cmullaparthi/ibrowse/pull/120
             * Enhanced SOCKS5 support
               https://github.com/cmullaparthi/ibrowse/pull/117

10-07-2014 - v4.1.1
             * Added support for accepting binaries as header names
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/110
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/111
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/112

18-04-2013 - v4.1.0
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/101
             * Support for https://github.com/cmullaparthi/ibrowse/issues/90
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/86
             * Merged various contributions. Please see commit history for details
             * Introduced the return_raw_request option

09-04-2013 - v4.0.2
             * Tagging master with new version to cover changes
               contributed over the past few months via various pull requests

07-08-2012 - v4.0.1
             * Fix issue 67 properly.

03-08-2012 - v4.0.0
             * Fixed a regression in handling HEAD.
               https://github.com/cmullaparthi/ibrowse/issues/67

             * Fixed a bug in handling SSL requests through a proxy

06-04-2012 - v3.0.4
             * Fix for the following issue
               https://github.com/cmullaparthi/ibrowse/issues/67

13-03-2012 - v3.0.3
             * Fixes the following issues
               https://github.com/cmullaparthi/ibrowse/issues/64
               https://github.com/cmullaparthi/ibrowse/issues/63
               https://github.com/cmullaparthi/ibrowse/issues/62

31-01-2012 - v3.0.2
             * Fixed bug when stopping ibrowse. Not service affecting.

23-01-2012 - v3.0.1
             * Fixed bug highlighted by Dialyzer

23-01-2012 - v3.0.0
             * Change to the way pipelining works.
             * Fixed various issues reported

13-04-2011 - v2.2.0
             * Filipe David Manana added IPv6 support. This is a mjor new
               feature, Thank you Filipe!
             * Joseph Wayne Norton contributed tweaks to .gitignore

09-02-2011 - v2.1.4
             * Fixed a bug reported by Ryan Zezeski with the
               save_response_to_file option.
               https://github.com/cmullaparthi/ibrowse/issues#issue/33

16-01-2011 - v2.1.3
             * Fixed issues with streaming and chunked responses when using
               the 'caller controls socket' feature. See following links for
               details. Contributed by Filipe David Manana.
               https://github.com/cmullaparthi/ibrowse/pull/24
               https://github.com/cmullaparthi/ibrowse/pull/25
               https://github.com/cmullaparthi/ibrowse/pull/27
               https://github.com/cmullaparthi/ibrowse/pull/28
               https://github.com/cmullaparthi/ibrowse/pull/29

             * Fix for issue 32 reported by fholzhauser
               https://github.com/cmullaparthi/ibrowse/issues#issue/32

             * Fixed some dialyzer warnings. Thanks to Kostis for reporting
               them.

20-12-2010 - v2.1.2
             * Pipelining wasn't working when used in conjunction with the
               {stream_to, {self(), once}} option. Bug report by
               Filipe David Manana.

10-12-2010 - v2.1.1
             * Fix for https://github.com/cmullaparthi/ibrowse/issues/issue/20
               by Filipe David Manana

             * Fix for https://github.com/cmullaparthi/ibrowse/issues/issue/21
               by Filipe David Manana

             * Fix for https://github.com/cmullaparthi/ibrowse/issues/issue/23
               by Filipe David Manana

             * Fix for bugs when using SSL by Jo?o Lopes

25-10-2010 - v2.1.0
             * Fixed build on OpenSolaris. Bug report and patch from
               tholschuh.
               http://github.com/cmullaparthi/ibrowse/issues/issue/10

             * Fixed behaviour of inactivity_timeout option. Reported by
               Jo?o Lopes.
               http://github.com/cmullaparthi/ibrowse/issues/issue/11

             * Prevent atom table pollution when bogus URLs are input to
               ibrowse. Bug report by Jo?o Lopes.
               http://github.com/cmullaparthi/ibrowse/issues/issue/13

             * Automatically do Chunked-Transfer encoding of request body
               when the body is generated by a fun. Patch provided by
               Filipe David Manana.
               http://github.com/cmullaparthi/ibrowse/issues/issue/14

             * Depending on input options, ibrowse sometimes included multiple
               Content-Length headers. Bug reported by Paul J. Davis
               http://github.com/cmullaparthi/ibrowse/issues/issue/15

             * Deal with webservers which do not provide a Reason-Phrase on the
               response Status-Line. Patch provided by Jeroen Koops.
               http://github.com/cmullaparthi/ibrowse/issues/issue/16

             * Fixed http://github.com/cmullaparthi/ibrowse/issues/issue/17
               This was reported by Filipe David Manana.

             * Fixed http://github.com/cmullaparthi/ibrowse/issues/issue/19
               This was reported by Dan Kelley and Filipe David Manana.

             * Added ibrowse:stream_close/1 to close the connection
               associated with a certain response stream. Patch provided by
               Jo?o Lopes.

             * Prevent port number being included in the Host header when port
               443 is intended. Bug reported by Andrew Tunnell-Jones

24-09-2010 - v2.0.1
             * Removed a spurious io:format statement

22-09-2010 - v2.0.0.

           * Added option preserve_chunked_encoding. This allows the
             caller to get the raw HTTP response when the
             Transfer-Encoding is Chunked. This feature was requested
             by Benoit Chesneau who wanted to write a HTTP proxy using
             ibrowse.

           * Fixed bug with the {stream_to, {Pid, once}} option. Bug
             report and lot of help from Filipe David Manana. Thank
             you Filipe.

           * The {error, conn_failed} and {error, send_failed} return
             values are now of the form {error, {conn_failed, Err}}
             and {error, {send_failed, Err}}. This is so that the
             specific socket error can be returned to the caller. I
             think it looks a bit ugly, but that is the best
             compromise I could come up with.

           * Added application configuration parameters
             default_max_sessions and default_max_pipeline_size. These
             were previously hard coded to 10.

           * Versioning of ibrowse now follows the Semantic Versioning
             principles.  See http://semver.org. Thanks to Anthony
             Molinaro for nudging me in this direction.

           * The connect_timeout option now only applies to the
             connection setup phase. In previous versions, the time
             taken to setup the connection was deducted from the
             specified timeout value for the request.

17-07-2010 - * Merged change made by Filipe David Manana to use the base64
               module for encoding/decoding.

11-06-2010 - * Removed use of deprecated concat_binary. Patch supplied by
               Steve Vinoski

10-06-2010 - * Fixed bug in https requests not going via the proxy

12-05-2010 - * Added support for the CONNECT method to tunnel HTTPS through
               a proxy. When a https URL is requested through a proxy,
               ibrowse will automatically use the CONNECT method to first
               setup a tunnel through the proxy. Once this succeeds, the
               actual request is dispatched. Successfully tested with the
               new SSL implementation in R13B-03
             * Added SSL support for direct connections.
               See ibrowse:spawn_worker_process/1 and
               ibrowse:spawn_link_worker_process/1
             * Added option to return raw status line and raw unparsed headers

23-04-2010 - * Fixes to URL parsing by Karol Skocik

08-11-2009 - * Added option headers_as_is

04-10-2009 - * Patch from Kostis Sagonas to cleanup some code and suppress
               dialyzer warnings

24-09-2009 - * When a filename was supplied with the 'save_response_to_file'
               option, the option was being ignored. Bug report from
               Adam Kocoloski

05-09-2009 - * Introduced option to allow caller to set socket options.

29-07-2009 - * The ETS table created for load balancing of requests was not
               being deleted which led to the node not being able to create
               any more ETS tables if queries were made to many number of
               webservers. ibrowse now deletes the ETS table it creates once the
               last connection to a webserver is dropped.
               Reported by Seth Falcon.
             * Spurious data being returned at end of body in certain cases of
               chunked encoded responses from the server.
               Reported by Chris Newcombe.

03-07-2009 - Added option {stream_to, {Pid, once}} which allows the caller
             to control when it wants to receive more data. If this option
             is used, the call ibrowse:stream_next(Req_id) should be used
             to get more data.
   *  Patch submitted by Steve Vinoski to remove compiler warnings
             about the use of obsolete guards

29-06-2009 - * Fixed following issues reported by Oscar Hellstr?m
       *  Use {active, once} instead of {active, true}
       *  Fix 'dodgy' timeout handling
       *  Use binaries internally instead of lists to reduce memory
                 consumption on 64 bit platforms. The default response format
                 is still 'list' to maintain backwards compatibility. Use the
                 option {response_format, binary} to get responses as binaries.
             * Fixed chunking bug (reported by Adam Kocoloski)
             * Added new option {inactivity_timeout, Milliseconds} to timeout
               requests if no data is received on the link for the specified
               interval. Useful when responses are large and links are flaky.
             * Added ibrowse:all_trace_off/0 to turn off all tracing
             * Change to the way responses to asynchronous requests are
               returned. The following messages have been removed.
                * {ibrowse_async_response, Req_id, {chunk_start, Chunk_size}}
                 * {ibrowse_async_response, Req_id, chunk_end}
             * Fixed Makefiles as part of Debian packaging
               (thanks to Thomas Lindgren)
             * Moved repository from Sourceforge to Github

11-06-2009 - * Added option to control size of streamed chunks. Also added
               option for the client to receive responses in binary format.

21-05-2008 - * Fixed bug in reading some options from the ibrowse.conf file.
               Reported by Erik Reitsma on the erlyaws mailing list
             * Fixed bug when cleaning up closing connections

27-03-2008 - * Major rewrite of the load balancing feature. Additional module,
               ibrowse_lb.erl, introduced to achieve this.
             * Can now get a handle to a connection process which is not part of
               the load balancing pool. Useful when an application is making
               requests to a webserver which are time consuming (such as
               uploading a large file). Such requests can be put on a separate
               connection, and all other smaller/quicker requests can use the
               load balancing pool. See ibrowse:spawn_worker_process/2 and
               ibrowse:spawn_link_worker_process/2
             * Ram Krishnan sent a patch to enable a client to send a lot of
               data in a request by providing a fun which is invoked by the
               connection handling process. This fun can fetch the data from
               any where. This is useful when trying to upload a large file
               to a webserver.
             * Use the TCP_NODELAY option on every socket by default
             * Rudimentary support for load testing of ibrowse. Undocumented,
               but see ibrowse_test:load_test/3. Use the source, Luke!
             * New function ibrowse:show_dest_status/2 to view state of
               connections/pipelines to a web server

20-02-2008 - Ram Krishnan sent another patch for another hidden bug in the
             save_response_to_file feature.

07-02-2008 - Ram Krishnan (kriyative _at_ gmail dot com) sent a simple patch to
             enable specifying the filename in the save_response_to_file option.
             When testing the patch, I realised that my original implementation
             of this feature was quite flaky and a lot of corner cases were
             not covered.  Fixed all of them. Thanks Ram!

17-10-2007 - Matthew Reilly (matthew dot reilly _at_ sipphone dot com)
             sent a bug report and a fix. If the chunk trailer spans two TCP
             packets, then ibrowse fails to recognise that the chunked transfer
             has ended.

29-08-2007 - Bug report by Peter Kristensen(ptx _at_ daimi dot au dot dk).
             ibrowse crashes when the webserver returns just the Status line
             and nothing else.

28-06-2007 - Added host_header option to enable connection to secure sites
             via stunnel

20-04-2007 - Geoff Cant sent a patch to remove URL encoding for digits in
             ibrowse_lib:url_encode/1.
             ibrowse had a dependency on the inets application because the
             ibrowse_http_client.erl invoked httpd_util:encode_base64/1. This
             dependency is now removed and the encode_base64/1 has been
             implemented in ibrowse_lib.erl

06-03-2007 -  Eric Merritt sent a patch to support WebDAV requests.

12-01-2007 -  Derek Upham sent in a bug fix. The reset_state function was not
              behaving correctly when the transfer encoding was not chunked.

13-11-2006 -  Youn?s Hafri reported a bug where ibrowse was not returning the
                temporary filename when the server was closing the connection
                after sending the data (as in HTTP/1.0).
              Released ibrowse under the BSD license

12-10-2006 -  Chris Newcombe reported bug in dealing with requests where no
              body is expected in the response. The first request would succeed
              and the next request would hang.

24-May-2006 - Sean Hinde reported a bug. Async responses with pipelining was
              returning the wrong result.

08-Dec-2005 - Richard Cameron (camster@citeulike.org). Patch to ibrowse to
              prevent port number being included in the Host header when port
              80 is intended.

22-Nov-2005 - Added ability to generate requests using the Chunked
              Transfer-Encoding.

08-May-2005 - Youn?s Hafri made a CRUX LINUX port of ibrowse.
              http://yhafri.club.fr/crux/index.html
