LiteSpeed QUIC Library
|
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 |
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.
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.
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:
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.
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.