Revision history for Net-Async-HTTP
0.49 2023-06-06
[CHANGES]
* Support proxy by UNIX socket
(thanks Erik Huelsmann <ehuels@gmail.com>)
* Added a `->DELETE` convenience method (RT139589)
* `use v5.14` in all perl files
* Use Test2::V0 for unit testing
0.48 2021-03-08
[CHANGES]
* Add PATCH method convenience wrapper
* Updates to documentation style
[BUGFIXES]
* Make sure to set port number in Host header if using a non-default
port for the URI scheme (RT134411)
0.47 2020-05-13
[CHANGES]
* Updated for Metrics::Any 0.05
0.46 2020-05-12
[CHANGES]
* Report client-side HTTP metrics using Metrics::Any, analogous to
the server ones reported by Net::Async::HTTP::Server
0.45 2019-11-26 17:32:42
[CHANGES]
* Allow configuring additional default headers to set in every
outbound request (RT125642)
* Added config option to enforce close after every request (RT128952)
[BUGFIXES]
* Correct request encoding for non-canonical headers (RT131040)
0.44 2019-02-17 14:11:57
[BUGFIXES]
* Regnerate embedded SSL testing certs
* No actual code changes
0.43 2018-11-14 22:05:27
[CHANGES]
* Use IPTOS_* constants directly from Socket 2.010
* Pass SNI hostname when making SSL connections (RT94605)
[BUGFIXES]
* Proxy connections require full authority string (RT119961)
0.42 2018-04-03 15:37:17
[CHANGES]
* Optionally support SOCKS5 proxies, using Net::Async::SOCKS
(RT124729)
* Minor docs improvements
[BUGFIXES]
* Ensure that on_header is still invoked for a final redirect that
isn't followed (RT124920)
* Better detection of $Socket::VERSION (RT122527)
0.41 2016/06/03 19:00:47
[BUGFIXES]
* Ensure all kept-alive connections are properly closed when removing
an instance from its containing IO::Async::Loop
0.40 2015/07/27 19:53:19
[CHANGES]
* Added 'on_ready' parameter to ->request method, for interacting
with the socket directly
* Allow optional restriction of connect family
0.39 2015/07/13 15:34:29
[CHANGES]
* Allow additional HTTP request headers to be supplied when in URI
mode
* Add require_SSL parameter that forbids plaintext requests
(RT101498)
* Announce that a future version may set a default value for
max_connections_per_host higher than 1
[BUGFIXES]
* Ensure that fail_on_error also applies to legacy-style
on_response+on_error continuations (RT102022)
* Avoid use of undef in an error message printing a warning
(RT101459)
0.38 2015/06/01 15:32:57
[CHANGES]
* More debug_printf() calls for better logging of connection-related
activity
[BUGFIXES]
* Ensure that failed connections are removed from the parent notifier
(RT102547)
* Make sure not to call length() on undefined values (RT102023)
* Ensure that the first request after connecting is only written
after the connection has been configured and has a notifier name
0.37 2014/12/13 15:06:06
[CHANGES]
* Major refactoring of Net::Async::HTTP::Connection internal closure-
generation logic
[BUGFIXES]
* Cancel pending connect Futures if pipelining means an existing
connection can be reused; handles failures better (RT99142)
* Attempt to handle the case where $f->done itself throws an
exception by at least maintaining internal state (RT100066)
0.36 2014/10/14 12:03:07
[CHANGES]
* Set the content of generated requests if a 'content' param is given
(RT97654)
* Store object-wide SSL params for convenience (RT98514)
* Clarify the final return value of the on_body_chunk handler
(RT98278)
* Nicer error message when a non-HTTP response header is received
(RT93231)
[BUGFIXES]
* 3xx responses without a Location header, and non-(GET|HEAD)
requests should not be redirected (RT98093)
0.35 2014/03/30 20:58:34
[BUGFIXES]
* Reparse URI scheme after redirect, so host/port/SSLness are reset
correctly (RT94303)
* Requeue the next pending request after an HTTP/1.0-style EOF
(RT94304)
* Require at least Compress::Bzip2 2.10 to do bzip2 decompression
Bugfixes sponsored by Cisco (http://www.cisco.com/)
0.34 2014/03/27 18:26:43
[BUGFIXES]
* Don't attempt to reconnect ready queue items that already have a
pending connection attempt (RT92904)
* Don't close over $responder, thus avoiding a reference cycle leak
(RT93232 / RT92728)
* Avoid relying on strong forward references in Future, by creating
intentional cycles on pending Futures. Workaround for bugfix in
upcoming Future release.
Bugfixes sponsored by NET-A-PORTER (http://www.net-a-porter.com/)
0.33 2014/01/22 23:48:40
[CHANGES]
* Include connection flieno in notifier_name in case of multiple
connections to a given host+port
* Use different Future failure operation names for timeout and
stall_timeout
[BUGFIXES]
* Zlib compression needs Compress::Raw::Zlib 2.057 or newer
* Ensure that unpipelined requests can be cancelled
* Ensure that other pending requests on a connection are also
errored out when connection receives EOF
0.32 2013/11/19 14:09:18
[CHANGES]
* Optionally decode encoded content and set the Accept-Encoding
header of outbound requests. Currently defaults off, but may become
true in a later version.
[BUGFIXES]
* Handle resolve/connect errors and pipeline queue flushing after
cancellation correctly
0.31 2013/11/04 18:04:30
[CHANGES]
* Allow a plain string URI, upgrading it to a URI object (RT89269)
* Added ->POST shortcut method, similar to ->GET and ->HEAD
* Extract HTTP basic auth. information from the URL in an
HTTP::Request (RT89775)
[BUGFIXES]
* Remember to keep resetting the stall timer when receiving body
content
* Fix awkward race between stall_timer and ->cancel
* Note dependency on Test::Refcount
0.30 2013/10/20 02:08:01
[CHANGES]
* Use Future->new->fail to return failing immediate Futures
* Ensure Future failures all use standard IO::Async style of
($message, NAME, ...)
[BUGFIXES]
* Ensure that fail_on_error doesn't cause non-error responses to fail
(RT88996)
0.29 2013/09/22 02:50:39
[CHANGES]
* Added 'on_body_write' callback
* Reordering of documentation to emphasise futures first
[BUGFIXES]
* Fix handling of chunk header when split across reads
0.28 2013/09/13 20:40:14
[CHANGES]
* Rewrite back into being a subclass of IO::Async::Stream instead of
using IO::Async::Protocol::Stream
* IO::Async::Stream 0.59 allows stall timeout detection during writes
now as well
[BUGFIXES]
* Closed connections should drop the ready queue, so they don't
accidentally try to process a second request
* Failure handling of corrupted chunk headers during chunked transfer
encoding
0.27 BUGFIXES:
* Ensure that $f->cancel on a request Future actually works properly
0.26 CHANGES:
* Added 'stall_timeout', at least for read operations
BUGFIXES:
* Fix NaHTTP+NaHTTP::Server unit tests for minimum version
requirements
0.25 BUGFIXES:
* Defend against ->setsockopt detecting SvPOK() of string values
* Test for both "Connection closed" and "Connection closed while
awaiting header" as OSes differ in behaviour
0.24 CHANGES:
* Optionally set IP_TOS field in sockets
* Remember to pass 'SSL' parameter around for requests on 'https'
scheme
0.23 BUGFIXES:
* Fix t/14conn-max.t failures - disable pipelining, wait for correct
peersock connection to become ready (it may not be [0])
0.22 CHANGES:
* Allow more control over per-host concurrency; either a pool with a
limit, or boundless growth of concurrency
0.21 CHANGES:
* Optional mode in which 4xx and 5xx HTTP errors are turned into
callback errors or Future failures
* Handle incoming 1xx informational responses
* Optionally set 'Expect' header for 100 Continue response
0.20 CHANGES:
* Improvements to timeout and cancellation handling
* Updated for Future 0.12; pass 'return' argument to
Future::Utils::repeat
* Use newer IO::Async::OS->socketpair in unit tests
0.19 CHANGES:
* Allow $http->do_request to return a Future object yielding the
eventual response
* Added convenient $http->GET and ->HEAD methods
* Many internal neatenings and rewrites to better support Futures
0.18 CHANGES:
* Default host/port/SSLness from URL in HTTP::Request if given
* Set Connection: keep-alive by default
* Presume that HTTP/1.1 connections can keep-alive by default
* Attempt to limit the number of outstanding requests in flight per
connection; keep others in a queue
BUGFIXES:
* Pass the same timer object down redirects so the same overall
timeout is reused
* Fix memory leak by remembering to remove closed NaHTTP::Protocol
children from containing NaHTTP
* Correctly terminate requests to connections closed during write
* Handle trailing whitespace after Chunked encoding chunk size
(thanks David Leadbeater)
0.17 CHANGES:
* Support optionally setting local host/port/addr (RT75431)
* Don't pipeline requests until the server is known to be at least
HTTP/1.1
BUGFIXES:
* Default request protocol to HTTP/1.1 so caller doesn't have to
(RT75830)
* http(s) port logic on numbers rather than protocol names (RT75615)
* Use more weaseling in timeout handlers to avoid cyclic reference
memory leak
0.16 BUGFIXES:
* Work around HTTP::Message's non-trimming of linear whitespace
(RT72843)
0.15 BUGFIXES:
* Better HTTP handling of "Connection: close" connections; close the
socket at the end of the response body or HEAD header.
0.14 CHANGES:
* Per-request timeouts
* Default port to http/https if not supplied explicitly
* Fill in Response ->previous on redirects - RT72791
* Improvements to unit tests
0.13 BUGFIXES:
* Handle redirect to https:// as well as http:// (RT71526)
* Fix use of conditional variable declaration that breaks on
Perl 5.14 (RT71545)
* Clean up connection cache after resolve, connect or SSL failures
(RT71530)
0.12 BUGFIXES:
* Wait for connect to complete when pipelining multiple requests down
the same connection initially (RT66189)
* When serialising a request, handle a full protocol://authority URI
by splitting protocol/authority parts out of it
0.11 BUGFIXES:
* Fix stalling t/12request-streaming.t test script that causes lots
of FAILs at test time
0.10 CHANGES:
* Support streaming of request body content
* Support HTTP::Cookies object as a cookie jar
* Allow proxy_host and proxy_port as ->configure parameters, to set
defaults for requests
0.09 CHANGES:
* Use IO::Async::Protocol->connect from 0.34
0.08 CHANGES:
* Support streaming of response body content
* Support SSL if IO::Async::SSL is installed
0.07 CHANGES:
* base on IO::Async::Protocol::Stream
0.06 CHANGES:
* When POSTing content that isn't form data, expect to be given its
content type
0.05 CHANGES:
* Added Test::Pod testing
* Created example wget-style script
* Documentation neatening
* More accurate 'requires' in Build.PL; hopefully to keep CPANTS
happy
0.04 CHANGES:
* Added 'use warnings'
* Updated to IO::Async 0.21 style
* Various small documentation and test script updates
0.03 CHANGES:
* Support server-local HTTP redirects
0.02 CHANGES:
* Support HTTP redirects
BUGFIXES:
* Declare dependency on HTTP::Request and HTTP::Response
0.01 First version, released on an unsuspecting world.