wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
Loading...
Searching...
No Matches
wired_srvloop_stream_slot Struct Reference

One request stream's cross-datagram reassembly state — everything the original single-stream wired_srvloop held, now per stream id. More...

#include <srvloop.h>

Data Fields

int in_use
 0 = free slot
u64 stream_id
 the client bidi stream id this slot reassembles
wired_h3reqdrive_req req
 the decoded request, valid once req_done
u8 req_scratch [512]
 backing store for req's path/body views
u8 req_buf [2048]
 offset-indexed request stream bytes
usz req_len
 highest offset+len written into req_buf
u8 req_fin
 1 once a request-stream FIN was seen
int req_done
 1 once this request was decoded/answered
int req_incomplete
 RFC 9114 4.1: 1 once this stream's FIN arrived without enough of the request to decode (e.g.
u8 req_wrap [2080]
 backing store for req's path/body views once decoded (see drive_complete in dispatch.c); must outlive the decode call, so it lives here rather than a stack local that dies on return
quic_h3_priority priority
 RFC 9218 4.1/7.1: this stream's current response priority, applied by a PRIORITY_UPDATE frame on the peer's control stream (see wired_srvloop_priority_apply) and defaulted (u=3, i=0) whenever the slot is (re)claimed – a request that never receives a PRIORITY_UPDATE keeps whatever the Priority request header field set (RFC 9218 5), unaffected by this field.

Detailed Description

One request stream's cross-datagram reassembly state — everything the original single-stream wired_srvloop held, now per stream id.

free (in_use == 0) until first claimed by wired_srvloop_step for a stream id, and freed again once its request has been answered (mirroring the old single-slot re-arm in wired_srvloop_step).

Field Documentation

◆ req_incomplete

int wired_srvloop_stream_slot::req_incomplete

RFC 9114 4.1: 1 once this stream's FIN arrived without enough of the request to decode (e.g.

a truncated HEADERS frame) – req_done is also set in this case (decode is attempted at most once), but no request was produced. Distinguishes "answered" from "must be aborted with H3_REQUEST_INCOMPLETE" for whichever layer reaps this slot.


The documentation for this struct was generated from the following file: