Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
13db9d1
Add BAT protocol IETF draft
dtikhonov Jan 17, 2026
c847b74
Clarify BAT for HTTP/3 datagrams
dtikhonov Jan 17, 2026
a216f08
Define failure when H3 datagrams not negotiated
dtikhonov Jan 17, 2026
f109b13
Add support for HTTP Datagrams (RFC 9297)
dtikhonov Jan 19, 2026
9413553
Cover http dg error handling in stream tests
dtikhonov Jan 19, 2026
d2f0f59
Addressed PR review comments
dtikhonov Jan 19, 2026
69bea6d
Guard HTTP datagram memcpy bounds
dtikhonov Jan 19, 2026
9a8b763
Simplify HTTP datagram payload sizing
dtikhonov Jan 19, 2026
54c27f4
Update src/liblsquic/lsquic_full_conn_ietf.c
dtikhonov Jan 19, 2026
11e166d
Annotate HTTP/3 datagram stream ID check
dtikhonov Jan 19, 2026
912c8ce
Add HTTP datagram history wrappers
dtikhonov Jan 19, 2026
27b692c
Devious Baton!
dtikhonov Jan 24, 2026
f816000
docs: add reliable stream reset draft
dtikhonov Jan 25, 2026
885859f
Add RESET_STREAM_AT parsing and TP plumbing
dtikhonov Jan 25, 2026
47403b5
Add RESET_STREAM_AT frame unit tests
dtikhonov Jan 25, 2026
753b051
Implement RESET_STREAM_AT receive handling
dtikhonov Jan 25, 2026
fa22960
Gate RESET_STREAM_AT behind engine setting
dtikhonov Jan 25, 2026
ec3cfb8
Rename RESET_STREAM_AT flag and split reset handlers
dtikhonov Jan 25, 2026
dc39f43
Small stylistic changes
dtikhonov Jan 25, 2026
271301f
Drop IETF checks from gQUIC reset path
dtikhonov Jan 25, 2026
7e68beb
Reduce number of forward declarations
dtikhonov Jan 25, 2026
d0e16f4
Remove IETF checks from IETF reset path
dtikhonov Jan 25, 2026
5d8eee6
Cleanup
dtikhonov Jan 25, 2026
480b22b
Add webtransport draft to docs for easy reference
dtikhonov Jan 25, 2026
689c514
Add public WebTransport API header
dtikhonov Jan 25, 2026
f17a8c4
Whitespace changes
dtikhonov Jan 25, 2026
e867d5f
tests: cover reset frame edge cases
dtikhonov Jan 25, 2026
960c1fe
tests: include IETF error codes for reset checks
dtikhonov Jan 25, 2026
0121925
tests: cover maybe_reset and qpack reset branches
dtikhonov Jan 25, 2026
3294abf
tests: cover STOP_SENDING cleanup branches
dtikhonov Jan 25, 2026
28d6e08
tests: expand reset frame coverage
dtikhonov Jan 25, 2026
8a746ca
Wire initial WebTransport scaffolding
dtikhonov Jan 25, 2026
9c16e71
tests: cover shutdown with send rst
dtikhonov Jan 25, 2026
6046ce1
Add devious baton WebTransport example
dtikhonov Jan 25, 2026
b175b57
docs: update reset_stream_at send plan
dtikhonov Jan 25, 2026
ce38a62
Style devious baton code per STYLE.md
dtikhonov Jan 25, 2026
97c804a
Implement WT accept/reject/close response handling
dtikhonov Jan 25, 2026
8c045a7
Wire WebTransport accept info in baton server
dtikhonov Jan 25, 2026
5f3dddb
Integrate devious baton with http_server
dtikhonov Jan 25, 2026
9a582a6
Add reliable size API and reset frame selection
dtikhonov Jan 25, 2026
f4de53a
Gate reliable size and simplify reset frame selection
dtikhonov Jan 25, 2026
05658ee
Route CONNECT through WebTransport handlers
dtikhonov Jan 25, 2026
f5fa2a9
Add WebTransport CONNECT handler table
dtikhonov Jan 25, 2026
d965fa1
Refine reset send gating and frame generation
dtikhonov Jan 25, 2026
4991bc2
A bit of cleanup
dtikhonov Jan 25, 2026
39494e9
Validate reliable size against written bytes
dtikhonov Jan 25, 2026
37ff97e
tests: expand reset coverage
dtikhonov Jan 26, 2026
ba7f841
stream: drop reset-at send flag
dtikhonov Jan 26, 2026
1387c4d
Whitespace
dtikhonov Jan 26, 2026
9f9028f
Add WT stream callbacks and stream creation hooks
dtikhonov Jan 26, 2026
28cac32
stream: use FINAL_SIZE_ERROR for size mismatches
dtikhonov Jan 31, 2026
a841fc4
send_ctl: bypass buffering for reliable prefix
dtikhonov Jan 31, 2026
ec590fa
docs: note reliable prefix bypasses buffering
dtikhonov Jan 31, 2026
b675398
stream: flush reliable prefix before reset
dtikhonov Feb 5, 2026
54d35bc
send_ctl: add buffered-only elision helper
dtikhonov Feb 5, 2026
631f436
Add WT datagram TODOs
dtikhonov Feb 5, 2026
5cd8990
conn_ietf: gate RESET_STREAM_AT by peer support
dtikhonov Feb 5, 2026
214d692
Wire WT datagrams to HTTP Datagram callbacks
dtikhonov Feb 5, 2026
0cd0dea
tests: cover reliable prefix buffering
dtikhonov Feb 6, 2026
1a1ff7b
docs: note reliable size limits
dtikhonov Feb 6, 2026
23d4db2
Add stream helpers for WebTransport access
dtikhonov Feb 6, 2026
e8c40e2
stream: document buffered-only elision choice
dtikhonov Feb 6, 2026
de7f6ef
Add per-stream HTTP datagram handlers
dtikhonov Feb 6, 2026
859296f
Refactor HTTP datagram callback lookup and conn helpers
dtikhonov Feb 15, 2026
65f4304
Hide WT HTTP datagram callbacks from public API
dtikhonov Feb 16, 2026
3ea8f6d
Add WT logger module and instrument WebTransport logs
dtikhonov Feb 16, 2026
b82e13a
Need to init wt_sessions
dtikhonov Feb 16, 2026
12b0c67
Name WT stream signal constants and remove magic values
dtikhonov Feb 16, 2026
b948fb8
Raise baton uni stream limits to 64
dtikhonov Feb 16, 2026
279e826
Fix client allowed uni stream calculation
dtikhonov Feb 16, 2026
874d75c
fix WT uni stream ctx double free
dtikhonov Feb 16, 2026
41c94d3
avoid control stream on_write spin in baton client
dtikhonov Feb 16, 2026
73a5b1b
buffer early WT streams and replay on session accept
dtikhonov Feb 16, 2026
3463238
Reject wantread on local uni streams and gate baton reads
dtikhonov Feb 16, 2026
052d8a2
Fix WT stream rebinding and baton read-loop regressions
dtikhonov Feb 16, 2026
8bc1ffc
Add devious baton protocol trace logging
dtikhonov Feb 16, 2026
a9a3de9
Negotiate WebTransport to allow server-initiated bidi streams
dtikhonov Feb 16, 2026
e5b34de
Use hq_setting_id enums for WebTransport settings
dtikhonov Feb 16, 2026
0f9b4e1
Use VINT_MAX_SIZE for SETTINGS frame sizing
dtikhonov Feb 16, 2026
00081e4
webtransport: enforce peer SETTINGS and session limits
dtikhonov Feb 16, 2026
08d1015
webtransport: rename engine WT knobs
dtikhonov Feb 16, 2026
f28873b
stream: assert against nested read_data_frames calls
dtikhonov Feb 21, 2026
f5257fe
stream: defer WT stream-if switch out of hq parser
dtikhonov Feb 21, 2026
38530b4
Merge remote-tracking branch 'origin/master' into 202601241123-web-tr…
dtikhonov Feb 21, 2026
b1b644d
wt: keep session alive until all WT streams are gone
dtikhonov Feb 21, 2026
b2d1cd4
wt: avoid stale control stream pointer on destroy
dtikhonov Feb 21, 2026
211e060
wt: log with connection ID from session/stream
dtikhonov Feb 21, 2026
be19329
wt: choose STOP_SENDING code when queueing stream
dtikhonov Feb 21, 2026
a04631b
wt/baton: drain control stream and close client on WT session close
dtikhonov Feb 21, 2026
571cd65
stream: replay pending reset callbacks after stream_if switch
dtikhonov Feb 21, 2026
efece42
Revert "stream: replay pending reset callbacks after stream_if switch"
dtikhonov Feb 21, 2026
5321821
baton: close streams after message once peer FIN arrives
dtikhonov Feb 21, 2026
105933a
stream/wt: finish incoming uni streams and skip double-close
dtikhonov Feb 22, 2026
fa477b7
baton: close local uni stream after successful send
dtikhonov Feb 22, 2026
09c9dfa
baton: log datagram batons without replying
dtikhonov Feb 24, 2026
abe3484
Merge branch '202601241955-stream-reset-at'
dtikhonov Feb 28, 2026
abe6211
bin: add prefixed logging wrapper
dtikhonov Feb 28, 2026
48bb706
wt: reject buffered streams with WT reset codes
dtikhonov Feb 28, 2026
fad5b77
baton: implement stream error handling
dtikhonov Mar 1, 2026
ddc746e
baton: rename stream fields and fold flags
dtikhonov Mar 1, 2026
6ea37cb
webtransport: update HTTP/3 settings IDs
dtikhonov Mar 1, 2026
583585f
baton: log CONNECT response status
dtikhonov Mar 1, 2026
91e5290
ietf: fix per-stream flow control limits
dtikhonov Mar 1, 2026
4cdca42
baton: raise client bidi receive window
dtikhonov Mar 1, 2026
c2f42d6
stream: send STREAM_BLOCKED at offset zero
dtikhonov Mar 4, 2026
7c6002a
baton: allow client path override
dtikhonov Mar 4, 2026
2062391
Version 15 of the WebTransport I-D is out
dtikhonov Mar 4, 2026
47e3e7b
webtransport: switch to draft-15 settings and token
dtikhonov Mar 6, 2026
0c4b44a
webtransport: require reset_stream_at when enabled
dtikhonov Mar 6, 2026
ad40bf8
wt: fix write_avail after bidi stream switch
dtikhonov Mar 6, 2026
74e82c5
Drop old WT draft
dtikhonov Mar 6, 2026
2a723f9
tests: add initial lsquic_wt unit coverage
dtikhonov Mar 7, 2026
9c9d663
hcso: require control stream in write_settings
dtikhonov Mar 8, 2026
30cfc3f
baton: remove nullable stream callback handling
dtikhonov Mar 8, 2026
7a7d4b4
baton: simplify post-message drain read path
dtikhonov Mar 8, 2026
f68e519
baton: fix Coverity double-free paths in request parser
dtikhonov Mar 8, 2026
73aab11
baton: simplify path building with one snprintf
dtikhonov Mar 8, 2026
d763587
bat_client: simplify capsule payload size guard
dtikhonov Mar 8, 2026
f4773ce
stream: cap writef size to ssize_t range
dtikhonov Mar 8, 2026
a6229c2
wt: add queued datagram API and write-interest callback
dtikhonov Mar 9, 2026
849f4c0
baton: add WT datagram burst and queue policy options
dtikhonov Mar 9, 2026
c5e1934
wt: rename dg read callback and parameterize queue limits
dtikhonov Mar 12, 2026
88900ad
tools: add WebTransport datagram queue matrix runner
dtikhonov Mar 12, 2026
bb0383f
wt: add datagram queue policy tests; fix baton default
dtikhonov Mar 12, 2026
3896ded
wt/test: remove redundant session helper casts
dtikhonov Mar 12, 2026
5b8d444
wt: make max QUIC payload advisory for queued datagrams
dtikhonov Mar 14, 2026
b10fa88
wt: use per-session datagram defaults in send API
dtikhonov Mar 14, 2026
5d9881d
wt: route default datagram send through _ex path
dtikhonov Mar 14, 2026
af190b9
wt: drop NULL-session guards in session APIs
dtikhonov Mar 14, 2026
612eb86
wt: unify session and stream callbacks in webtransport_if
dtikhonov Mar 14, 2026
0bafead
wt: rename webtransport_if callbacks to wti_* and document
dtikhonov Mar 14, 2026
27054e3
wt: format webtransport_if callback declarations
dtikhonov Mar 14, 2026
e9a900f
wt: prefix connect/accept params and add default macros
dtikhonov Mar 14, 2026
567c81d
Merge remote-tracking branch 'origin/master' into 202601241123-web-tr…
dtikhonov Mar 14, 2026
468ea3a
wt: format accept params in public header
dtikhonov Mar 14, 2026
955a08c
baton/wt: add dg queue knobs and reset callback coverage
dtikhonov Mar 14, 2026
8d4d0e9
wt: keep reset mask local to on_reset
dtikhonov Mar 14, 2026
b445651
wt/test: verify reset and stop-sending dispatch paths
dtikhonov Mar 14, 2026
87810b6
docs: add baton queue limit usage and examples
dtikhonov Mar 14, 2026
430cd8b
ietf/wt: require and advertise initial WT settings
dtikhonov Mar 14, 2026
75e3bfc
hcso: note single-session assumption for WT setting mapping
dtikhonov Mar 14, 2026
f4a90bf
stream: log WT flow-control capsules on CONNECT stream
dtikhonov Mar 14, 2026
4b95e0c
webtransport: add draft-14 compatibility and CONNECT fallback
dtikhonov Mar 15, 2026
85ac013
wt: enable CONNECT-stream capsule parsing after accept
dtikhonov Mar 15, 2026
2ef3c3e
stream: add capsule handler registry and move WT capsule parsing
dtikhonov Mar 15, 2026
79c947e
Decouple stream core from WT callbacks
dtikhonov Mar 16, 2026
f553ffe
Generalize stream switch hooks and remove WT from stream core
dtikhonov Mar 16, 2026
f95fcf5
Generalize stream switch IDs and hide stream flags from WT
dtikhonov Mar 16, 2026
1b09762
Remove WT symbols from stream header
dtikhonov Mar 16, 2026
7e587b8
wt: simplify accept cleanup flow and defer success response
dtikhonov Mar 24, 2026
bdb69ba
Refactor write event dispatch in preparation for datagram priority
dtikhonov Mar 24, 2026
4a8973d
conn: add configurable fixed/DRR write scheduling
dtikhonov Mar 30, 2026
e722a08
conn: simplify write scheduler init and strategy switching
dtikhonov Mar 30, 2026
cc4ca5d
conn: simplify write class mapping and invariants
dtikhonov Mar 30, 2026
7a5fe2e
Simplify
dtikhonov Mar 30, 2026
f1b48f4
Cap write scheduler weights to 64 and store as bytes
dtikhonov Mar 30, 2026
2efdd87
Expose write scheduler knobs via -o and document scheduler APIs
dtikhonov Mar 30, 2026
b105189
Collect write-class byte stats in fixed and DRR schedulers
dtikhonov Mar 31, 2026
b557f0d
write-sched: simplify DRR to stream/datagram share
dtikhonov Apr 3, 2026
417e720
write-sched: enforce DRR class budgets by bytes
dtikhonov Apr 3, 2026
67147b6
http/drr: notify negotiated caps and honor datagram share under blocking
dtikhonov Apr 3, 2026
d55d771
api/docs: move DRR weight cap internal and document on_http_caps
dtikhonov Apr 3, 2026
311c3a9
write-sched: derive fixed class count from file-scope callback array
dtikhonov Apr 3, 2026
fc66af8
write-sched: reuse write_dispatch_f across fixed dispatch state
dtikhonov Apr 3, 2026
97fd02c
write-sched: move DRR budget state into scheduler union
dtikhonov Apr 3, 2026
71df11d
conn: repack DRR scheduler state layout
dtikhonov Apr 3, 2026
de257d0
conn: keep datagram writer for HTTP datagram fallback
dtikhonov Apr 3, 2026
7ea3e21
conn: allow write datagram params before negotiation
dtikhonov Apr 3, 2026
aee425d
conn: reuse stream write dispatch order in DRR
dtikhonov Apr 3, 2026
478f8d2
conn: use percentage-style DRR weight scale
dtikhonov Apr 3, 2026
b70ef01
Merge remote-tracking branch 'origin/master' into 202601241123-web-tr…
dtikhonov Apr 3, 2026
eb42400
Drop some ternaries
dtikhonov Apr 3, 2026
2914572
stream: latch HTTP capsule callback at header parse
dtikhonov Apr 4, 2026
cd717cd
tests: fix mini_conn_delay LSQUIC_TEST mismatch
dtikhonov Apr 4, 2026
5b68090
wt: reject malformed incoming session IDs
dtikhonov Apr 4, 2026
2826ace
webtransport: fix close capsule handling
dtikhonov Apr 7, 2026
8692628
webtransport: add close-path unit coverage
dtikhonov Apr 10, 2026
8d699fd
webtransport: document compatibility behavior
dtikhonov Apr 10, 2026
c998b69
webtransport: defer accept until HTTP caps resolve
dtikhonov Apr 11, 2026
67052f6
tests: cover WebTransport compatibility mode
dtikhonov Apr 11, 2026
78752ed
examples: tighten WebTransport CONNECT validation
dtikhonov Apr 11, 2026
c22193b
api: move WebTransport stream helpers to lsquic_wt.h
dtikhonov Apr 11, 2026
d0c6086
docs: add WebTransport guide
dtikhonov Apr 11, 2026
a2e3c27
Fix WebTransport teardown and replay bugs
dtikhonov Apr 11, 2026
fafb48b
Harden WT stream remap failures
dtikhonov Apr 11, 2026
55cbae0
Validate WT response header buffers
dtikhonov Apr 11, 2026
494beb8
Harden sample WebTransport servers
dtikhonov Apr 11, 2026
6643c04
Fix verification short-read accounting
dtikhonov Apr 11, 2026
66c6e6f
Contain interop stream read failures
dtikhonov Apr 11, 2026
3f007f9
Check WT datagram queue allocation sizes
dtikhonov Apr 11, 2026
917b0d7
Fail cleanly on WT local stream init errors
dtikhonov Apr 11, 2026
8115550
Validate WT response header counts
dtikhonov Apr 11, 2026
7c44707
Rollback WT datagram write interest on failure
dtikhonov Apr 11, 2026
bd01cf7
Recover from WT uni stream init failure
dtikhonov Apr 11, 2026
e6762f7
Fix WT uni allocation test plumbing
dtikhonov Apr 11, 2026
eced683
Close WT streams on read errors
dtikhonov Apr 11, 2026
bbc26bd
Add WebTransport fuzz harness
dtikhonov Apr 11, 2026
47eec96
Harden WT fuzz close-capsule helper
dtikhonov Apr 11, 2026
febd714
Reject truncated WT uni session IDs
dtikhonov Apr 11, 2026
fc95288
Reject truncated HTTP datagram capsule types
dtikhonov Apr 11, 2026
79c1e1a
Make WT fuzz harness scenario-driven
dtikhonov Apr 11, 2026
bac7919
Add WT datagram-write fuzz hook
dtikhonov Apr 11, 2026
cec2f39
Reject impossible WT session counts
dtikhonov Apr 11, 2026
4d3104b
Require 2xx WT accept responses
dtikhonov Apr 11, 2026
c167137
Reject 2xx WT reject statuses
dtikhonov Apr 11, 2026
a5358bf
Guard WT APIs against null sessions
dtikhonov Apr 11, 2026
1995b27
Close WT streams on write errors
dtikhonov Apr 11, 2026
245cc57
Reject control stream WT reset operations
dtikhonov Apr 11, 2026
0b571ee
Reject client-side WT accept streams
dtikhonov Apr 11, 2026
47f497c
Guard WT datagram wrapper null sessions
dtikhonov Apr 11, 2026
a2d0527
Reject late WT accept handoff
dtikhonov Apr 11, 2026
92e82ec
Revert WT null-session API hardening
dtikhonov Apr 12, 2026
5abf9a4
Restore WT client accept handoff
dtikhonov Apr 19, 2026
b0e6e4f
Merge remote-tracking branch 'origin/master' into 202601241123-web-tr…
dtikhonov Apr 25, 2026
4a7e7a2
Fix MSVC write scheduler strategy warning
dtikhonov Apr 25, 2026
6f0944e
Fix FreeBSD header dependencies
dtikhonov Apr 25, 2026
591f461
Remove redundant header queue assertion
dtikhonov Apr 27, 2026
e5cff46
Merge remote-tracking branch 'origin/master' into 202601241123-web-tr…
dtikhonov May 17, 2026
68b4692
Restore WT support test helpers after merge and fix stream updates
dtikhonov May 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ OPTION(LSQUIC_BIN "Compile example binaries that use the library" ON)
OPTION(LSQUIC_TESTS "Compile library unit tests" ON)
OPTION(LSQUIC_SHARED_LIB "Compile as shared librarry" OFF)
OPTION(LSQUIC_DEVEL "Compile in development mode" OFF)
OPTION(LSQUIC_WEBTRANSPORT "Enable WebTransport support" OFF)

INCLUDE(GNUInstallDirs)
INCLUDE(CheckSymbolExists)
Expand Down Expand Up @@ -82,9 +81,6 @@ IF (LSQUIC_DEVEL)
SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_DEVEL=1")
ENDIF()

IF (LSQUIC_WEBTRANSPORT)
SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_WEBTRANSPORT_SERVER_SUPPORT=1")
ENDIF()

IF(LSQUIC_PROFILE EQUAL 1)
SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g -pg")
Expand Down Expand Up @@ -438,6 +434,7 @@ ENDIF()

INSTALL(FILES
include/lsquic.h
include/lsquic_wt.h
include/lsquic_types.h
include/lsxpack_header.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lsquic
Expand Down
8 changes: 7 additions & 1 deletion bin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ IF(MSVC)
LIST(APPEND LIBS ${GETOPT_LIB})
ENDIF()

add_executable(http_server http_server.c prog.c test_common.c test_cert.c)
add_executable(http_server http_server.c devious_baton.c prog.c test_common.c test_cert.c)
IF(NOT MSVC) # TODO: port MD5 server and client to Windows
add_executable(md5_server md5_server.c prog.c test_common.c test_cert.c)
add_executable(md5_client md5_client.c prog.c test_common.c test_cert.c)
Expand All @@ -32,6 +32,9 @@ add_executable(echo_server echo_server.c prog.c test_common.c test_cert.c)
add_executable(echo_client echo_client.c prog.c test_common.c test_cert.c)
add_executable(duck_server duck_server.c prog.c test_common.c test_cert.c)
add_executable(duck_client duck_client.c prog.c test_common.c test_cert.c)
add_executable(bat_server bat_server.c prog.c test_common.c test_cert.c)
add_executable(bat_client bat_client.c prog.c test_common.c test_cert.c)
add_executable(baton_client baton_client.c devious_baton.c prog.c test_common.c test_cert.c)
add_executable(perf_client perf_client.c prog.c test_common.c test_cert.c)
add_executable(perf_server perf_server.c prog.c test_common.c test_cert.c)

Expand Down Expand Up @@ -67,6 +70,9 @@ TARGET_LINK_LIBRARIES(echo_server ${LIBS})
TARGET_LINK_LIBRARIES(echo_client ${LIBS})
TARGET_LINK_LIBRARIES(duck_server ${LIBS})
TARGET_LINK_LIBRARIES(duck_client ${LIBS})
TARGET_LINK_LIBRARIES(bat_server ${LIBS})
TARGET_LINK_LIBRARIES(bat_client ${LIBS})
TARGET_LINK_LIBRARIES(baton_client ${LIBS})
TARGET_LINK_LIBRARIES(perf_client ${LIBS})
TARGET_LINK_LIBRARIES(perf_server ${LIBS})

Expand Down
Loading