- fix: fix max redirection (#170)
- fix: don't encode path parameters and unreserved chars. (#176)
- fix: honor max_redirect.
- fix: socket checkout in the pool: close the socket if something happen while passing the control to the client
- fix: put back the waiter in the queue of the pool if no socket can be delivered
- fix: make sure we don't release a closed typo
- add: shutdown method to transports
- add: hackney_trace module to trace a request
- add: reuse/new connection metrics
- fix: guard binary in
hackney_multipart:len_mp_stream/2
- improvement: pass the socket to
hackney:request_info/1
- dependency: update ssl_verify_hostname
- fix: make sure to pass the Host header to the request
- fix: HTTP basic authentication
- fix content-type case
- improvement: tests
- improvement: handle {error, closed} for HTTP 1.1 when no content-length is given.
- improvement: handle 204 and 304 status
- fix keep-alive handling
- remove expm package
- build under R18
- improvement: Do not wait to cancel a request
- improvement: do not control the request premptively
- fix client leaks on error
- fix monitor counters
- fix SSL validation under R15 and R14 Erlang versions.
- Apply SSL certificate validation to SOCKS5 and HTTP proxies.
- fix redirection: rewrite Host header
- update default certification authority file. Make sure we can validate all SSL connections even on the AWS platform.
- fix typo
hackney 1.0.0 has been released. This is the first stable and long term supported release of hackney.
- add metrics
- add SSL certificate verification by default.
- fix: Pool handling
- fix: handle strings in headers
- fix; convert User/Password as string if needed
- fix: handle body given as an empty list
- export
find_pool/1
and allows any poolname.
- improve hackney performance and concurrency
- fix pool handling: make sure to reuse the connections
- fix
hackney:stop_async/1
- fix memory leak (#77): some requests were not cleaned correctly in hackney_manager.
- fix ssl race condition (#130)
- fix: check if relative url contains a forward slash
- refactor integration tests and add more tests
- fix socket pool: make sure to close all sockets when the pool is terminated, and do not store closed sockets if we know it.
- fix redirect location: make sure we use absolute urls
- fix redirection: make sure to follow redirections
- fix hackney_response:read_body/3 spec
- trim response headers when needed
- add redirection basic tests
- fix: validate if the redirection url is absolute.
- fix: return location from headers when possible in
hackney:location/1
. - fix HEAD request. Remove the need to call the body method
- fix: remove undefined function references
- tests: start to handle tests with httpbin
When doing an HEAD request, the signature of the response when it
succeded is now {ok, Status, ResponseHeaders}
and do not contains a
client reference any more.
- put hackney_lib back in the source code and refactor the source repository
- fix: handle bad socks5 proxy response #113
- fix: handle timeout in hackney_socks4:connect/5 #112
- fix: Accept inet6 tcp option for ssl
- fix redirection
- fix: add versions option for ssl
- fix: return the full body on closed connections.
- fix: make sure to always pass the Host header.
- improvement: URI encoding is now fully normalized.
- improvement: TCP_NODELAY is now available by default for all transports
- improvements: IDNA parsing is only done during the normalization which makes all the connections faster..
- fix: connections options are now correctly passed to the transports.
- fix: HTTP proxying. make sure we reuse the connection
- fix: HTTP proxying, only resolve the proxy domain.
- bump hackney_lib to 0.3.0
the mimetypes has been
replaced by the
hackney_mimetypes
module. It makes content-type detection a little more efficient. In the
process the functions hackney_util:content_type/1
and
hackney_bstr:content_type/1
has been removed. You should now use the
function hackney_mimetypes:filename/1
.
- new improved and more performant IDNA support
- make sure the socket is closed when we skip the body if needed
- fix multipart EOF parsing
- make sure we finish a multipart stream
- bump hackney_lib to 0.2.5
- enable TCP_NODELAY by default. (To disable, pass the option
{nodelay, false} to
connect_options`.
- improvement: speed IDNA domains handing
- fix http proxy via CONNECT
- fix: encode the path
- bump to hackney_lib 0.2.4
- add
hackney:location/1
to get the final location - make
hackney_request:send/2
more efficient - fix socket removing in the pool
- fix HTTP proxying
- support IDNA hostnames
- fix multipart file header
- improve the performance when sending a
{multipart, Parts}
body. Send it as a stream. - bump hackney_lib version to 0.2.2
- improve multipart handling: With this change, we can now calculate the
full multipart stream content-length using
hackney_multipart:len_mp_stream/2
. - add
hackney:setopts/2
to set options to a request when reusing it. - add
hackney:send_reques/3
to pass new options to a request. - add the
{stream_to, Pid}
setting to a request to send the messages from an asynchronous response to another PID. - fix
Host
header: some server do not comply well with the spec and fail to parse the port when they are listening on 80 or 443. This change fix it. - fix: make sure we are re-using connections with asynchronous responses.
- All messages from an async response are now under the
format
{hackney_response, Ref, ... }
to distinct hackney messages from others in a process easily. - You can only make an async response at a time. Ie if you are are doing a persistent request (reusing the same reference) you will need to pass the async option again to the request. For that purpose the functions hackney:send_request/3 and hackney:setopts/2 have been added.
- multipart messages have changed. See the documentation for more information.
- fix response multipart processing
- add support for multipart responses
- add support for cookies: There is now a
cookie
option that can be passed to the request. It can be a sinle cookie or a list of cookies. To parse cookies from the response a functionhackney:cookies/1
has been added. It return all the cookies as a list of [{Key, Value}]. - breaking change: use hackney_lib a web toolkit to handle the HTTP protocol and other manipulations.
- optimization: send body and headers together when it is possible
- fix release handling
- add: support redirection in async responses
- improve hackney_url:make_url/3
- fix: handle case where the response is already done in async responses
- fix: trap exits in hackney_manager
service release with a new feature and some minor improvements
- added the support for socks5 proxies
- improvment: integer and atom can now be passed in url params or forms values.
- breaking change: differentiate connect/recv timeout, now connect
timeout return
{error, connect_timeout}
major release. With this release the API will not evolve much until the 1.0 release sometimes in january.
- breaking change: hackney now return a reference instead of an opaque record. The information is maintained in an ETS table. The same reference is now used for async response requests.
- breaking change:
stream_body_request/2
andstream_multipart_request/2
functions has been renamed tosend_body/2
andsend_multipart_body/2
. - breaking change: remove
hackney:close_stream/1
function. You only need to usehackney:close/1
now. - breaking change: rename
hackney:raw/1
function tohackney:cancel_request/1
. - breaking change: the hakney pool handler based on dispcount is now available in its own repository so hackney doe not depends on dispcount.
- fix: canceling and closing a request now make sure the async response process is killed.
- fix: make sure we pass a
Transfer-Encoding: chunked
header when we send a body without content-length. - fix: make sure the client is correcly reconnected when we reuse a reference.
- add new Loadbalance pool handler based on dispcount
- allows to set the pool handler
- breaking change: remove
hackney:start_pool/2
andhackney:stop_pool/1
, use insteadhackney_pool:start_pool/2
andhackney_pool:stop_pool/1
- breaking change: A pool is now used by default
- breaking change: The
hackney_form
module has been removed. You can now encode/parse a form using the functions in thehackney_url
module. - deprecate
pool_size
and replace it bymax_connections
- fix: apply applications defaults to the pool
- doc: Fix the asynchronous response example in the readme
- add hackney_url:make_url/3, hackney_url:qs/1, hackney_url:parse_qs/1 functions
- add the possibility to get an asynchronous response
- add support for the "Expect: 100-continue" header
- add hackney:controlling_process/2 to pass the control of an hackney context to another process
- fix: proxied connections
- fix: correct the path passed to a request
- fix: multipart forms
- fix: Make sure that the controller process of the socket is the pool process when the socket is in the pool
- fix: auth header when when the user is not given
- fix: doc typos
- fix: dialyzer errors
- fix: add mimetypes to the list of loaded applications
- fix: test.ebin example
- removed parse_transform, the REST API is now available at the compilation. fix: fix file upload content type
- doc: fix typos
- handle
identity
transfert encoding. When the connection close return latest buffer.
- Body can be passed as a function
- Add recv_timeout option
- Fix HEAD request (don't stream the body)
- Don't pass the Port to the Host header if it's default (http, https)
- Set the connection timeout
- Make sure sendfile correctly handle chunked encoding
- Add support for partial file uploads
- Return received buffer when no content lenght is given (http 1.0)
- Instead of returning
{error, closed}
, return{error, {closed, Buffer}}
when you receive the body, so you can figure what happened and maybe use the partial body.
- Allows to stream a multipart request
- Add
insecure
option to connect via ssl without verifying an SSL certificate - Handle empty headers values
- Add
force_redirect
option - Add expm support
- Fix body streaming
- Fix SSL handling
- Fix hackney:request/3 (no more loop)
- Add Multipart support
- Add HTTP Proxy tunneling support
- Fix Chuncked Response decoding
- Allows the user to use a custom function to stream the body
- Add the possibility to send chunked requests
- Add an option to automatically follow a redirection
- Allows the user to force hackney to use the default pool
- initial release