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

RFC 9114 4.1 / 4.3.1, RFC 9204 4.5: recovered request pseudo-headers. More...

#include <request_drive.h>

Data Fields

const u8method
 :method value (static-table view or scratch)
usz method_len
 method length in octets
const u8scheme
 :scheme value (static-table view or scratch)
usz scheme_len
 scheme length in octets
const u8authority
 :authority value (static-table view or scratch)
usz authority_len
 authority length in octets
const u8path
 :path value (static-table view or scratch)
usz path_len
 path length in octets
const u8protocol
 RFC 9220 3: :protocol value, 0 if absent.
usz protocol_len
 protocol length in octets, 0 if absent
const u8body
 request body view into stream_data, 0 if none
usz body_len
 0 for GET and other bodyless requests
quic_h3_priority priority
 RFC 9218 5 priority header (defaults).
const u8origin
 regular origin header value (static-table view or scratch), 0 if absent (RFC 9220 3 / WebTransport draft SS3.6 origin check applies only when present)
usz origin_len
 origin length in octets, 0 if absent
u8 wt_avail [256]
 WebTransport subprotocol negotiation: the raw wt-available-protocols header value (an RFC 8941 sf-list of sf-strings, the client's offer in preference order), copied verbatim – not a scratch view like origin, so the offer survives past the decode's scratch lifetime.
usz wt_avail_len
 wt-available-protocols length in octets, 0 if absent
u8 cookie [512]
 RFC 9114 4.2.1: multiple cookie field lines, reassembled with the "; " delimiter into a single value (as if the peer had sent one HTTP/1.1-style Cookie header) before the application ever sees it.
usz cookie_len
 cookie length in octets, 0 if absent
int expect_continue
 RFC 9110 10.1.1: 1 if a regular expect field carried exactly "100-continue" (case-sensitive; every real sender spells it lowercase, matching RFC 9114 4.2's field-name-lowercase requirement's spirit), 0 otherwise – the condition the server's 100 (Continue) interim response path gates on.
int frame_unexpected
 RFC 9114 7.2.5/7.2.8 (9114-067/9114-073): 1 if the request stream carried a frame this endpoint must reject outright before HEADERS was reached – PUSH_PROMISE (a server-to-client frame this server-only SDK never sends, so any received instance is unexpected) or an HTTP/2-only reserved type (0x02/0x06/0x08/0x09).

Detailed Description

RFC 9114 4.1 / 4.3.1, RFC 9204 4.5: recovered request pseudo-headers.

Each value is either a static-table view or a copy in the caller-supplied scratch buffer, depending on how the peer encoded the field line.

Field Documentation

◆ cookie

u8 wired_h3reqdrive_req::cookie[512]

RFC 9114 4.2.1: multiple cookie field lines, reassembled with the "; " delimiter into a single value (as if the peer had sent one HTTP/1.1-style Cookie header) before the application ever sees it.

A reassembled value that does not fit is truncated to what fits.

◆ frame_unexpected

int wired_h3reqdrive_req::frame_unexpected

RFC 9114 7.2.5/7.2.8 (9114-067/9114-073): 1 if the request stream carried a frame this endpoint must reject outright before HEADERS was reached – PUSH_PROMISE (a server-to-client frame this server-only SDK never sends, so any received instance is unexpected) or an HTTP/2-only reserved type (0x02/0x06/0x08/0x09).

Set by find_headers (request_parse.c) via quic_h3_frame_recv_ok; the caller aborts the stream with H3_FRAME_UNEXPECTED instead of the H3_REQUEST_INCOMPLETE an ordinary decode failure gets.

◆ wt_avail

u8 wired_h3reqdrive_req::wt_avail[256]

WebTransport subprotocol negotiation: the raw wt-available-protocols header value (an RFC 8941 sf-list of sf-strings, the client's offer in preference order), copied verbatim – not a scratch view like origin, so the offer survives past the decode's scratch lifetime.

A value that does not fit is dropped (treated as absent).


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