Buffer abstraction (headers)
void imquic_http3_qlog_frame_parsed(imquic_qlog *qlog, uint64_t stream_id, uint64_t length, json_t *frame)
Add a frame_parsed.
Definition http3.c:803
struct imquic_http3_connection imquic_http3_connection
HTTP/3 connection abstraction.
size_t imquic_http3_parse_request_data(imquic_http3_connection *h3c, imquic_stream *stream, uint8_t *bytes, size_t blen)
Definition http3.c:513
const char * imquic_http3_error_code_str(imquic_http3_error_code type)
Helper function to serialize to string the name of a imquic_http3_error_code value.
Definition http3.c:241
void imquic_http3_connection_destroy(imquic_http3_connection *h3c)
Helper method to destroy an existing HTTP/3 connection associated with a QUIC core connection.
Definition http3.c:104
void imquic_http3_qlog_parameters_set(imquic_qlog *qlog, gboolean local, gboolean extended_connect, gboolean h3_datagram)
Add a parameters_set event.
Definition http3.c:740
void imquic_http3_process_stream_data(imquic_connection *conn, imquic_stream *stream, imquic_buffer_chunk *chunk, gboolean new_stream)
Callback invoked by the core when there's incoming STREAM data to process on an existing connection.
Definition http3.c:291
size_t imquic_http3_settings_add_int(uint8_t *bytes, size_t blen, imquic_http3_settings_type type, uint64_t number)
Helper to add a new SETTINGS property to a buffer.
Definition http3.c:232
imquic_http3_frame_type
HTTP/3 frame type.
Definition http3.h:42
@ IMQUIC_HTTP3_HEADERS
HEADERS.
Definition http3.h:46
@ IMQUIC_HTTP3_GOAWAY
GOAWAY.
Definition http3.h:54
@ IMQUIC_HTTP3_MAX_PUSH_ID
MAX_PUSH_ID.
Definition http3.h:56
@ IMQUIC_HTTP3_DATA
DATA.
Definition http3.h:44
@ IMQUIC_HTTP3_SETTINGS
SETTINGS.
Definition http3.h:50
@ IMQUIC_HTTP3_CANCEL_PUSH
CANCEL_PUSH.
Definition http3.h:48
@ IMQUIC_HTTP3_WEBTRANSPORT_UNI_STREAM
WebTransport unidirectional stream.
Definition http3.h:58
@ IMQUIC_HTTP3_PUSH_PROMISE
PUSH_PROMISE.
Definition http3.h:52
@ IMQUIC_HTTP3_WEBTRANSPORT_STREAM
WebTransport bidirectional stream.
Definition http3.h:60
void imquic_http3_qlog_stream_type_set(imquic_qlog *qlog, gboolean local, uint64_t stream_id, const char *type)
Add a stream_type_set.
Definition http3.c:777
int imquic_http3_prepare_headers_response(imquic_http3_connection *h3c, uint8_t *es, size_t *es_len, uint8_t *rs, size_t *rs_len)
Helper to prepare a new HTTP/3 response.
Definition http3.c:594
const char * imquic_http3_settings_type_str(imquic_http3_settings_type type)
Helper function to serialize to string the name of a imquic_http3_settings_type value.
Definition http3.c:63
imquic_http3_error_code
HTTP/3 error codes.
Definition http3.h:90
@ IMQUIC_HTTP3_H3_CLOSED_CRITICAL_STREAM
H3_CLOSED_CRITICAL_STREAM.
Definition http3.h:102
@ IMQUIC_HTTP3_H3_CONNECT_ERROR
H3_CONNECT_ERROR.
Definition http3.h:124
@ IMQUIC_HTTP3_H3_FRAME_UNEXPECTED
H3_FRAME_UNEXPECTED.
Definition http3.h:104
@ IMQUIC_HTTP3_H3_VERSION_FALLBACK
H3_VERSION_FALLBACK.
Definition http3.h:126
@ IMQUIC_HTTP3_H3_DATAGRAM_ERROR
DATAGRAM_ERROR.
Definition http3.h:92
@ IMQUIC_HTTP3_H3_FRAME_ERROR
H3_FRAME_ERROR.
Definition http3.h:106
@ IMQUIC_HTTP3_QPACK_DECOMPRESSION_FAILED
QPACK_DECOMPRESSION_FAILED.
Definition http3.h:128
@ IMQUIC_HTTP3_H3_REQUEST_INCOMPLETE
H3_REQUEST_INCOMPLETE.
Definition http3.h:120
@ IMQUIC_HTTP3_H3_REQUEST_REJECTED
H3_REQUEST_REJECTED.
Definition http3.h:116
@ IMQUIC_HTTP3_H3_NO_ERROR
NO_ERROR.
Definition http3.h:94
@ IMQUIC_HTTP3_H3_MISSING_SETTINGS
H3_MISSING_SETTINGS.
Definition http3.h:114
@ IMQUIC_HTTP3_QPACK_ENCODER_STREAM_ERROR
QPACK_ENCODER_STREAM_ERROR.
Definition http3.h:130
@ IMQUIC_HTTP3_H3_REQUEST_CANCELLED
H3_REQUEST_CANCELLED.
Definition http3.h:118
@ IMQUIC_HTTP3_H3_ID_ERROR
H3_ID_ERROR.
Definition http3.h:110
@ IMQUIC_HTTP3_H3_GENERAL_PROTOCOL_ERROR
GENERAL_PROTOCOL_ERROR.
Definition http3.h:96
@ IMQUIC_HTTP3_H3_EXCESSIVE_LOAD
H3_EXCESSIVE_LOAD.
Definition http3.h:108
@ IMQUIC_HTTP3_H3_STREAM_CREATION_ERROR
H3_STREAM_CREATION_ERROR.
Definition http3.h:100
@ IMQUIC_HTTP3_QPACK_DECODER_STREAM_ERROR
QPACK_DECODER_STREAM_ERROR.
Definition http3.h:132
@ IMQUIC_HTTP3_H3_MESSAGE_ERROR
H3_MESSAGE_ERROR.
Definition http3.h:122
@ IMQUIC_HTTP3_H3_INTERNAL_ERROR
IMQUIC_HTTP3_H3_INTERNAL_ERROR.
Definition http3.h:98
@ IMQUIC_HTTP3_H3_SETTINGS_ERROR
H3_SETTINGS_ERROR.
Definition http3.h:112
json_t * imquic_qlog_http3_prepare_content(json_t *parent, const char *name, gboolean array)
Helper to prepare a frame or an object/array, and add it to a parent if it's specified.
Definition http3.c:752
imquic_http3_stream_type
HTTP/3 stream type.
Definition http3.h:26
@ IMQUIC_HTTP3_CONTROL_STREAM
Control stream.
Definition http3.h:28
@ IMQUIC_HTTP3_QPACK_DECODER_STREAM
QPACK decoder stream.
Definition http3.h:34
@ IMQUIC_HTTP3_QPACK_ENCODER_STREAM
QPACK encoder stream.
Definition http3.h:32
@ IMQUIC_HTTP3_PUSH_STREAM
Push stream.
Definition http3.h:30
imquic_http3_connection * imquic_http3_connection_create(imquic_connection *conn, char *subprotocol)
Helper method to create a new HTTP/3 connection associated with a new QUIC core connection.
Definition http3.c:93
size_t imquic_http3_parse_request_headers(imquic_http3_connection *h3c, imquic_stream *stream, uint8_t *bytes, size_t blen)
Definition http3.c:453
imquic_http3_settings_type
HTTP/3 SETTINGS type.
Definition http3.h:68
@ IMQUIC_HTTP3_SETTINGS_MAX_FIELD_SECTION_SIZE
MAX_FIELD_SECTION_SIZE.
Definition http3.h:72
@ IMQUIC_HTTP3_SETTINGS_WEBTRANSPORT_MAX_SESSIONS
WEBTRANSPORT_MAX_SESSIONS.
Definition http3.h:82
@ IMQUIC_HTTP3_SETTINGS_QPACK_BLOCKED_STREAMS
QPACK_BLOCKED_STREAMS.
Definition http3.h:74
@ IMQUIC_HTTP3_SETTINGS_QPACK_MAX_TABLE_CAPACITY
QPACK_MAX_TABLE_CAPACITY.
Definition http3.h:70
@ IMQUIC_HTTP3_SETTINGS_H3_DATAGRAM
H3_DATAGRAM.
Definition http3.h:78
@ IMQUIC_HTTP3_SETTINGS_ENABLE_CONNECT_PROTOCOL
ENABLE_CONNECT_PROTOCOL.
Definition http3.h:76
@ IMQUIC_HTTP3_SETTINGS_ENABLE_WEBTRANSPORT
ENABLE_WEBTRANSPORT.
Definition http3.h:80
int imquic_http3_parse_settings(imquic_http3_connection *h3c, imquic_stream *stream, uint8_t *bytes, size_t blen)
Definition http3.c:110
int imquic_http3_parse_request(imquic_http3_connection *h3c, imquic_stream *stream, uint8_t *bytes, size_t blen)
Definition http3.c:383
const char * imquic_http3_frame_type_str(imquic_http3_frame_type type)
Helper function to serialize to string the name of a imquic_http3_frame_type value.
Definition http3.c:38
void imquic_qlog_http3_append_object(json_t *parent, const char *name, const char *value)
Helper to append a name/value object to an array.
Definition http3.c:769
int imquic_http3_prepare_settings(imquic_http3_connection *h3c)
Helper to prepare a new SETTINGS frame.
Definition http3.c:685
void imquic_http3_qlog_frame_created(imquic_qlog *qlog, uint64_t stream_id, uint64_t length, json_t *frame)
Add a frame_created.
Definition http3.c:788
const char * imquic_http3_stream_type_str(imquic_http3_stream_type type)
Helper function to serialize to string the name of a imquic_http3_stream_type value.
Definition http3.c:23
void imquic_http3_check_send_connect(imquic_http3_connection *h3c)
Helper to send a new HTTP/3 CONNECT request to establish a WebTransport session.
Definition http3.c:649
int imquic_http3_prepare_headers_request(imquic_http3_connection *h3c, uint8_t *es, size_t *es_len, uint8_t *rs, size_t *rs_len)
Helper to prepare a new HTTP/3 request.
Definition http3.c:529
imquic public interface (headers)
QPACK stack (WebTransport only) (headers)
Reference counter mechanism.
QUIC STREAM abstraction (headers)
Buffer chunk.
Definition buffer.h:22
QUIC Connection.
Definition connection.h:114
HTTP/3 connection abstraction.
Definition http3.h:140
uint64_t local_qpack_decoder_stream
Definition http3.h:150
char * subprotocol
Subprotocol to negotiate on WebTransport, if any (currently unused)
Definition http3.h:161
gboolean settings_received
Definition http3.h:146
volatile gint destroyed
Whether this instance has been destroyed (reference counting)
Definition http3.h:165
uint64_t remote_control_stream
Definition http3.h:148
imquic_refcount ref
Reference counter.
Definition http3.h:167
uint64_t local_qpack_encoder_stream
Definition http3.h:149
uint64_t local_control_stream
Streams.
Definition http3.h:148
gboolean settings_sent
Current SETTINGS state.
Definition http3.h:146
GHashTable * buffers
Buffers for incoming data, indexed by stream ID.
Definition http3.h:163
imquic_qpack_context * qpack
QPACK context.
Definition http3.h:157
gboolean has_bidi_streams
Whether there (already) are bidirectional streams in this connection.
Definition http3.h:155
uint64_t remote_qpack_encoder_stream
Definition http3.h:149
gboolean is_server
Whether this is a server or a client.
Definition http3.h:144
gboolean request_stream_set
Whether the request stream has been set.
Definition http3.h:153
uint64_t request_stream
Definition http3.h:151
gboolean webtransport
Whether a WebTransport connection has been established.
Definition http3.h:159
uint64_t remote_qpack_decoder_stream
Definition http3.h:150
imquic_connection * conn
Associated QUIC core connection.
Definition http3.h:142
QLOG instance.
Definition qlog.h:50
QPACK context.
Definition qpack.h:64
QUIC stream.
Definition stream.h:41