All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Hostname verification now accepts wildcard certificates (e.g.
*.googleapis.com) by settingcustomize_hostname_checkfor RFC 6125 wildcard matching. (#60)
- Removed Elixir compile warnings.
- Verify CA certificates with
:certifi(~> 2.5) by default. This is considered a breaking change for anyone using Kadabra for anything other than Pigeon.
- Minimum Elixir version bumped to 1.6.
- Removed Elixir 1.11 compile warnings.
- Removed some compile warnings.
- Fixed ArithmeticError when calculating how many streams to request on infinite stream sets.
- Fixed supervisor crash report during normal connection shutdown.
- Removed
GenStagedependency. - GOAWAY error logger messages now disabled by default.
Re-enable with
config :kadabra, debug_log?: true.
- Fixed
{:closed, pid}task race condition during connection cleanup. - Everything is supervised under
Kadabra.Applicationagain, instead of handling supervision yourself.
- Send exactly number of allowed bytes on initial connection WINDOW_UPDATE.
- Default settings use maximum values for MAX_FRAME_SIZE and INITIAL_WINDOW_SIZE.
- Incoming PING and WINDOW_UPDATE frames are now validated, closing the connection if an error is encountered.
- Fixed: can no longer accidentally send 0-size WINDOW_UPDATE frames.
- Fixed: don't send WINDOW_UPDATE frames larger than remote server's available connection flow window.
- Support for
httpURIs. - Requests are now buffered with GenStage.
- Added
Kadabra.head/2andKadabra.delete/2. Kadabra.open/3replaced withKadabra.open/2.- Scheme, host and port are now automatically parsed from the URI string. See the README for examples.
- Socket options passed as
:tcp/:ssl, respectively.
- Removed
:reconnectfunctionality.
- Fixed: Streams properly killed if hpack table crashes.
- Removed unused
Scribedependency.
- Fixed:
noproccrash caused by race condition on recv GOAWAY.
- Fixed: ES flag properly set on certain HEADERS frames.
- Fixed: Memory leak on connection crashes.
- New supervision structure.
Kadabra.open/2now returns a supervisor pid, but the API for making requests remains unchanged.
- Fixed: Connections properly respect settings updates.
- Fixed: Hpack memory leak on connection close.
- Fixed: Connection settings defaults are now actually default.
- Fixed: Sending payloads larger than the stream window.
- Minimum requirements are now Elixir 1.4/OTP 19.
- Performance improvements for individual streams.
- Fixed: multiple connections now supported per host.
- Request responses now return with new
%Stream.Response{}struct. - Push promises can be intercepted with
{:push_promise, %Stream.Response{}}messages.
Connectionnow respectsmax_concurrent_streams.- Fixed: proper WINDOW_UPDATE responses on received DATA frames.
- Fixed: calling
Kadabra.open/3withreconnect: falseto disable automatic reconnect on socket close.