Skip to content

Tags: codedge-llc/kadabra

Tags

v0.6.1

Toggle v0.6.1's commit message

Verified

This commit was signed with the committer’s verified signature.
hpopp Henry Popp
docs: update CONTRIBUTING

v0.6.0

Toggle v0.6.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
fix: add certifi (#42)

v0.5.0

Toggle v0.5.0's commit message
chore: bump to v0.5.0

Also:
- Updated README
- Updated LICENSE copyright year.

v0.4.5

Toggle v0.4.5's commit message
chore: update README

v0.4.4

Toggle v0.4.4's commit message
fix: request exact stream max if infinite

Previously set to 1 billion. Might accidentally create a case where
the connection is still valid, but streams no longer dispatch.

v0.4.3

Toggle v0.4.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
fix: process hierarchy (#37)

* fix: use temporary instead of transient restart for Kadabra.Supervisor

* feat: removed StreamSupervisor

Part of a supervision restructuring. Connection will basically monitor
everything except ConnectionQueue.

* feat: Hpack and Socket brought under Connection

* feat: all new process hierarchy

Removed GenStage completely. ConnectionQueue is replaced with
ConnectionPool, which will (eventually) maintain clones of Connection
for better parallelism.

* fix: pass tests for elixir 1.4.5

* fix: handle :connection_error shutdowns

* refactor: minor changes

Also: added elixir 1.7.0 to travis

* refactor: module dependency restructuring

- Encodable implementations moved into Encodable
- Frame.Flags broken back out into each frame
- Connection.Egress for sending outbound frames

* test: removed some useless tests

* fix: removed unnecessary Process.monitor of streams by connection

Also: GOAWAY logging disabled by default, can be re-enabled with
`:debug_log?` config option.

v0.4.2

Toggle v0.4.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
fix: proper supervision cleanup (#35)

* fix: proper supervision cleanup WIP

* fix: everything now supervised under :kadabra app

Was the original setup a while back. Supervisor was quitting
with :shutdown during cleanup, which would shutdown the process
that originally start_link'd it.

* fix: timeout on stream WindowUpdate

Replies immediately so connection can continue on with its life.
Call timeout was previously crashing connection on occasion.

* refactor: minor refactoring

* feat: CONTINUATION for sending large headers WIP

Chunks correctly, but remotes are still terminating with a
COMPRESSION_ERROR.

Possible ideas why:
1. Hpack is encoding the fragment wrong
2. Frames are being sent out of order
3. Continuation frames are being serialized wrong
4. Remotes aren't equipped to handle such large headers
5. Sending a 20mb header is just a shitty thing to do

* fix: don't crash Connection if Socket closed

Fixed by not shutting down Kadabra.Socket if the socket closes. Bins
sent to a closed socket are simply ignored.

Sending CONTINUATION frames is mostly there. Fairly certain the issue is
with hpack, so I'll need to figure something out.

* chore: bump version and update changelog

* test: increase test coverage

v0.4.1

Toggle v0.4.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
feat: v0.4.1 (#34)

* feat: socket moved to its own GenServer

* feat: frame validation GOAWAY errors WIP

New Connection.Processor module to validate frames, acting on them if
valid.

Also: Ping now has :stream_id

* feat: set max initial window size and max frame size

Also, various refactorings.

* fix: dont accidentally send 0-size WINDOW_UPDATE

It's a PROTOCOL_ERROR

* fix: respect remote flow control window

WINDOW_UPDATES were blowing past the max limit for servers that enforce
it (APNS).

Also: Connection.FlowControl can now queue a list of requests, and
process them recursively.

* refactor: cleanup to increase test coverage

* fix: process GOAWAY immediately (and send one back)

Proper thing to do on recv of GOAWAY.

* fix: dont auto-stop Kadabra.Connection

On recv of GOAWAY, error, etc, wait for Supervisor to stop it by
spawning a task.

Might present issues on received stream frames that get processed before
the kill. Will need to implement some sort of graceful shutdown.

* refactor: remove StreamSupervisor

Makes more sense to just link streams to Connection and remove them from
flow control as they stop. Will be useful for detecting crashed streams
and handling accordingly.

* refactor: remove registry tuples for Stream

No longer needed!

* refactor: removed Stream.FlowControl dependencies

It now acts more like a data chunker that respects a given
configuration. Stream is now responsible for popping off the :out_queue
and sending the appropriate DATA frames.

* fix: differentiate local and remote settings

* refactor: reduce Stream dependencies

* refactor: HEADERS frame implements Encodable

* refactor: remove various module dependencies

* refactor: remove Socket depdency on Frame

* refactor: StreamSet

Currently held within Connection.FlowControl-- needs to be broken out.
Will allow Stream.FlowControl and Connection.FlowControl to become
effectively the same when refactored properly.

* fix: send WINDOW_UPDATE on stream even with full conn

* test: increase test coverage

* chore: prepare for v0.4.1 release

v0.4.0

Toggle v0.4.0's commit message
fix: make supervisor stop an async task again

v0.3.8

Toggle v0.3.8's commit message
chore: update README