LiteSpeed QUIC Library
Data Fields
lsquic_engine_settings Struct Reference

Data Fields

unsigned es_versions
 
unsigned es_cfcw
 
unsigned es_sfcw
 
unsigned es_max_cfcw
 
unsigned es_max_sfcw
 
unsigned es_max_streams_in
 
unsigned long es_handshake_to
 
unsigned long es_idle_conn_to
 
int es_silent_close
 
unsigned es_max_header_list_size
 
const char * es_ua
 
uint32_t es_pdmd
 
uint32_t es_aead
 
uint32_t es_kexs
 
int es_support_srej
 
int es_support_push
 
int es_support_tcid0
 
int es_support_nstp
 
int es_honor_prst
 
unsigned es_progress_check
 
unsigned es_pendrw_check
 
int es_rw_once
 
unsigned es_proc_time_thresh
 
int es_pace_packets
 

Field Documentation

unsigned lsquic_engine_settings::es_cfcw

Initial default CFCW.

In server mode, per-connection values may be set lower than this if resources are scarce.

Do not set es_cfcw and es_sfcw lower than LSQUIC_MIN_FCW.

See also
es_max_cfcw
unsigned long lsquic_engine_settings::es_handshake_to

Handshake timeout in microseconds.

For client, this can be set to an arbitrary value (zero turns the timeout off).

int lsquic_engine_settings::es_honor_prst

If set to true value, the library will drop connections when it receives corresponding Public Reset packet. The default is to ignore these packets.

unsigned long lsquic_engine_settings::es_idle_conn_to

ICSL in microseconds

unsigned lsquic_engine_settings::es_max_cfcw

This value is used to specify maximum allowed value CFCW is allowed to reach due to window auto-tuning. By default, this value is zero, which means that CFCW is not allowed to increase from its initial value.

See also
es_cfcw
unsigned lsquic_engine_settings::es_max_header_list_size

This corresponds to SETTINGS_MAX_HEADER_LIST_SIZE (RFC 7540, Section 6.5.2). 0 means no limit. Defaults to LSQUIC_DF_MAX_HEADER_LIST_SIZE.

unsigned lsquic_engine_settings::es_max_streams_in

MIDS

int lsquic_engine_settings::es_pace_packets

If set to true, packet pacing is implemented per connection.

The default value is LSQUIC_DF_PACE_PACKETS.

unsigned lsquic_engine_settings::es_pendrw_check

A non-zero value enables internal checks to identify suspected infinite loops in Pending RW Queue logic. The value of this setting is the number of times a connection on Pending RW Queue is allowed to be processed without making progress before it is banished from Pending RW Queue.

Progress is considered to have happened if any of the following occurs:

  • User reads data, FIN, or new error (due to a reset) from a stream.
  • A new stream-related frame is packetized.

The defaut value is LSQUIC_DF_PENDRW_CHECK.

unsigned lsquic_engine_settings::es_proc_time_thresh

If set, this value specifies that number of microseconds that functions lsquic_engine_proc_all(), lsquic_engine_process_conns_with_incoming(), lsquic_engine_process_conns_to_tick(), and lsquic_engine_process_conns_with_pend_rw() are allowed to spend before returning.

This is not an exact science and the connections must make progress, so the deadline is checked after all connections get a chance to tick and at least one batch of packets is sent out.

When processing function runs out of its time slice, immediate calls to lsquic_engine_has_pend_rw() and lsquic_engine_has_unsent_packets() return false.

The default value is LSQUIC_DF_PROC_TIME_THRESH.

unsigned lsquic_engine_settings::es_progress_check

A non-zero value enables internal checks that identify suspected infinite loops in user on_read and on_write callbacks and break them. An infinite loop may occur if user code keeps on performing the same operation without checking status, e.g. reading from a closed stream etc.

The value of this parameter is as follows: should a callback return this number of times in a row without making progress (that is, reading, writing, or changing stream state), loop break will occur.

The defaut value is LSQUIC_DF_PROGRESS_CHECK.

int lsquic_engine_settings::es_rw_once

A non-zero value make stream dispatch its read-write events once per call.

When zero, read and write events are dispatched until the stream is no longer readable or writeable, respectively, or until the user signals unwillingness to read or write using lsquic_stream_wantread() or lsquic_stream_wantwrite() or shuts down the stream.

The default value is LSQUIC_DF_RW_ONCE.

unsigned lsquic_engine_settings::es_sfcw

Initial default SFCW.

In server mode, per-connection values may be set lower than this if resources are scarce.

Do not set es_cfcw and es_sfcw lower than LSQUIC_MIN_FCW.

See also
es_max_sfcw
int lsquic_engine_settings::es_silent_close

SCLS (silent close)

int lsquic_engine_settings::es_support_nstp

Q037 and higher support "No STOP_WAITING frame" mode. When set, the client will send NSTP option in its Client Hello message and will not sent STOP_WAITING frames, while ignoring incoming STOP_WAITING frames, if any. Note that if the version negotiation happens to downgrade the client below Q037, this mode will *not* be used.

This option does not affect the server, as it must support NSTP mode if it was specified by the client.

int lsquic_engine_settings::es_support_push

Setting this value to 0 means that

For client: a) we send a SETTINGS frame to indicate that we do not support server push; and b) All incoming pushed streams get reset immediately. (For maximum effect, set es_max_streams_in to 0.)

int lsquic_engine_settings::es_support_srej

Support SREJ: for client side, this means supporting server's SREJ responses (this does not work yet) and for server side, this means generating SREJ instead of REJ when appropriate.

int lsquic_engine_settings::es_support_tcid0

If set to true value, the server will not include connection ID in outgoing packets if client's CHLO specifies TCID=0.

For client, this means including TCID=0 into CHLO message. TODO: this does not work yet.

const char* lsquic_engine_settings::es_ua

UAID – User-Agent ID. Defaults to LSQUIC_DF_UA.

unsigned lsquic_engine_settings::es_versions

This is a bit mask wherein each bit corresponds to a value in enum lsquic_version. Client starts negotiating with the highest version and goes down. Server supports either of the versions specified here.

See also
lsquic_version

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