Changelog
View Source0.3.1
- Bump
quicdep to 1.6.3.
0.3.0
- Bump
quicdep to 1.6.2,h2dep to 0.8.0. - IPv6: listeners bind via
ip/family(h3 and h2); clients accept IP-literal hosts andinet:ip_address()tuples, withfamily/happy_eyeballs/connection_attempt_delaycontrols (h3). IPv6 literals are bracketed in the:authorityheader. webtransport:listener_sockname/1returns the bound{Ip, Port}(also surfaced assocknameinlistener_info/1). Resolved from the socket for h3; best-effort (requested addr + bound port) for h2, which exposes only the port.- 0-RTT: session-ticket capture (
{webtransport, session_ticket, _}to the connecting process) and connection-level acceptance reporting viawebtransport:early_data_accepted/1. Thesession_ticketconnect option plumbs a stored ticket through to QUIC. Full 0-RTT resumption is not yet supported through the synchronous connect path. - Tests: IPv6 round-trip (h3 + h2), sockname, and session-ticket capture.
0.2.6
- Fix: failed h3
connect/4no longer leaks its per-connection router. The router isstart_link'd to the caller but traps exits, so the caller link never reaped it;connect_h3now stops it on the connect-failure path, and closes the H3 connection (which reaps the router via its monitor) when the session fails to start. - Fix: the h2 CONNECT-stream data loop now monitors both the h2 connection and the session and exits on either
'DOWN', instead of blocking forever if the connection dies without aclosedmessage or the session goes away. Server and client now spawn it the same way. - Bound the router
open_bidi_streamcall (wasinfinity) so an unresponsive H3 connection cannot stall the session process. - Tests: regressions for the router leak and the data-loop termination.
0.2.5
- Bump
quicdep to 1.4.5,h2dep to 0.6.1. - OTP 29 support: replace deprecated
catch Exprexpressions withtry ... catch ... end(webtransport_h2,webtransport_session,webtransport). - CI: add OTP 28 and 29 to the test matrix; bump rebar3 to 3.25.0.
0.2.4
- Bump
quicdep to 1.4.2.
0.2.3
- Embedding (h3):
accept/4now works when called from a process other than the QUIC connection process. The per-connection stream router is keyed by the QUIC connection pid, shared by theh3_settings/1connection_handler and byaccept/4(viaquic_h3:get_quic_conn/1), instead of the caller's process dictionary. Incoming bidi/uni streams and datagrams now reach the session even when the embedder dispatches each request to its own worker (e.g. Livery). The router's registry row and process are reaped when its QUIC connection ends. - CT:
embedded_accept_round_trip_test(h3) drives a rawquic_h3server withh3_settings/0merged in, accepts from a worker process, and asserts that a bidi stream (with FIN) and a datagram both round-trip through the echo handler.
0.2.2
- Docs: README gains a Sponsors section (Enki Multimedia logo vendored under
docs/images/). Docs: fix invalid
webtransport:open_stream(Session, bidi | uni)snippet — type-union pipe was in expression position; nowbidi %% or uni.- CT: cover
listeners/0,listener_info/1, andstart_listener/2cert/key error paths (webtransport.erlline coverage 51% → 54%).
0.2.1
start_listener/2(h3): switch the listener loop fromspawn_link/3tospawn/3sostop_listener/1no longer propagates ashutdownexit to the caller. The interactive shell (and any non-trapping caller) now stays clean across a full lifecycle.webtransport_session:init/1: distinguish a handler module that fails to load ({handler_not_loaded, M, Reason}) from a loaded module missinginit/2orinit/3.- README: quick-start now launches the shell with
ERL_FLAGS="-pa examples" rebar3 shell --apps webtransportso handler modules outsidesrc/are reachable. - Regression test:
stop_listener_does_not_kill_caller_test(h3 + h2 groups).
Known issue (tracked upstream in quic): a graceful close_session/1 still emits a quic_h3_connection quic_closed CRASH REPORT because the dep treats any QUIC-conn 'DOWN' as abnormal. Will resolve when quic is bumped.
0.2.0
- Switch
h2andquicdeps to hex packages:h2 0.5.0,quic 1.3.0. - Add
public_keyto the application list. - Clean dialyzer run: dropped dead
{error, _}clauses aroundh2_capsule:decode/1andh2_varint:decode/1, removed unreachableRouter =:= undefinedbranch, dropped unsupportedh3_datagram_enabledfromquic_h3:start_server/3opts, switched listener loop tospawn_link/3for static reachability. - Configure
xref_checks(skipexports_not_usedfor the public API) anddialyzer(plt_extra_apps: [public_key, ssl, crypto, inets]). - Add GitHub Actions CI: OTP 26/27 matrix runs compile, xref, eunit, dialyzer; separate job builds ex_doc.
0.1.0
- Initial release.