litespeedtech / litespeedtech/lsquic

Clarify DATA delivery semantics with unclaimed HTTP/3 header sets

Open
#638 0 comments 0 reactions 0 assignees View on GitHub
API question
Dominant language
C
Stars
1.9k
Forks
397
Avg merge
2d 22h
Merged PRs (30d)
8

Description

The multi-header-set work adds explicit notification for incoming HTTP/3 header sets via `on_hset_in`, allowing applications to call `lsquic_stream_get_hset()` when a header set arrives.

One related behavior question is whether an unclaimed HTTP/3 header set should block DATA delivery.

Current behavior to preserve for now:

- `read_data_frames()` may parse a HEADERS frame and continue processing subsequent DATA in the same read path.
- If the application does not claim a non-HTTP/1.x header set, existing `stream_readf()` behavior remains the primary guard when the queued hset is observed at the stream read layer.
- The multi-header-set implementation should not add a new filter-level rule that stops DATA solely because `stream->uh` contains an unclaimed HTTP/3 hset.

Question:

Should the public API define that DATA must not be delivered while an earlier HTTP/3 header set remains unclaimed, or should applications be responsible for claiming hsets promptly when `on_hset_in` fires?

If we choose the stricter behavior, it should be added deliberately with tests and API documentation because it can change existing header-bypass users that currently do not immediately drain 1xx/early-hints header sets.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing read_data_frames() and stream_readf(), then review how on_hset_in and lsquic_stream_get_hset() expose queued HTTP/3 header sets. Resolve whether an unclaimed set should block DATA delivery or remain the application's responsibility. If stricter semantics are chosen, done requires corresponding tests and public API documentation.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
api, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.