mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Release 2.27.1
- [API] New knob to set outgoing packet batch size. - Aborted connection now become tickable immediately. - Abort connection when HTTP/3 frame cannot be opened (can only happen when malloc fails).
This commit is contained in:
parent
6511378725
commit
06b2a2363e
277 changed files with 368 additions and 283 deletions
2
APIs.txt
2
APIs.txt
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
LSQUIC APIs
|
LSQUIC APIs
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2021-01-06
|
||||||
|
- 2.27.1
|
||||||
|
- [API] New knob to set outgoing packet batch size.
|
||||||
|
- Aborted connection now become tickable immediately.
|
||||||
|
- Abort connection when HTTP/3 frame cannot be opened (can only happen
|
||||||
|
when malloc fails).
|
||||||
|
|
||||||
2020-12-31
|
2020-12-31
|
||||||
- 2.27.0
|
- 2.27.0
|
||||||
- [API] Remove keylog callbacks. See issue #188.
|
- [API] Remove keylog callbacks. See issue #188.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
In addition to the LiteSpeed QUIC Team, the following people contributed
|
In addition to the LiteSpeed QUIC Team, the following people contributed
|
||||||
to the LiteSpeed QUIC and HTTP/3 Library:
|
to the LiteSpeed QUIC and HTTP/3 Library:
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
LSQUIC Examples
|
LSQUIC Examples
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
INCLUDE(CheckFunctionExists)
|
INCLUDE(CheckFunctionExists)
|
||||||
CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG)
|
CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG)
|
||||||
CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG)
|
CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* duck_client.c -- The siduck client. See
|
* duck_client.c -- The siduck client. See
|
||||||
* https://tools.ietf.org/html/draft-pardue-quic-siduck-00
|
* https://tools.ietf.org/html/draft-pardue-quic-siduck-00
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* A duck quacks! The server for the siduck protocol:
|
* A duck quacks! The server for the siduck protocol:
|
||||||
* https://tools.ietf.org/html/draft-pardue-quic-siduck-00
|
* https://tools.ietf.org/html/draft-pardue-quic-siduck-00
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* echo_client.c -- This is really a "line client:" it connects to QUIC server
|
* echo_client.c -- This is really a "line client:" it connects to QUIC server
|
||||||
* and sends it stuff, line by line. It works in tandem with echo_server.
|
* and sends it stuff, line by line. It works in tandem with echo_server.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* echo_server.c -- QUIC server that echoes back input line by line
|
* echo_server.c -- QUIC server that echoes back input line by line
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* http_client.c -- A simple HTTP/QUIC client
|
* http_client.c -- A simple HTTP/QUIC client
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* http_server.c -- A simple HTTP/QUIC server
|
* http_server.c -- A simple HTTP/QUIC server
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* md5_client.c -- This client sends one or more files to MD5 QUIC server
|
* md5_client.c -- This client sends one or more files to MD5 QUIC server
|
||||||
* for MD5 sum calculation.
|
* for MD5 sum calculation.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* md5_server.c -- Read one or more streams from the client and return
|
* md5_server.c -- Read one or more streams from the client and return
|
||||||
* MD5 sum of the payload.
|
* MD5 sum of the payload.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* prog.h -- common setup and options for QUIC program
|
* prog.h -- common setup and options for QUIC program
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef TEST_CERT_H
|
#ifndef TEST_CERT_H
|
||||||
#define TEST_CERT_H
|
#define TEST_CERT_H
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#if __GNUC__
|
#if __GNUC__
|
||||||
#define _GNU_SOURCE /* For struct in6_pktinfo */
|
#define _GNU_SOURCE /* For struct in6_pktinfo */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1953,6 +1953,11 @@ set_engine_option (struct lsquic_engine_settings *settings,
|
||||||
settings->es_ptpc_prop_gain = atof(val);
|
settings->es_ptpc_prop_gain = atof(val);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (0 == strncmp(name, "max_batch_size", 14))
|
||||||
|
{
|
||||||
|
settings->es_max_batch_size = atoi(val);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
if (0 == strncmp(name, "allow_migration", 15))
|
if (0 == strncmp(name, "allow_migration", 15))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* Test client's and server's common components.
|
* Test client's and server's common components.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -866,6 +866,14 @@ settings structure:
|
||||||
|
|
||||||
Default value is :macro:`LSQUIC_DF_DELAY_ONCLOSE`
|
Default value is :macro:`LSQUIC_DF_DELAY_ONCLOSE`
|
||||||
|
|
||||||
|
.. member:: int es_max_batch_size
|
||||||
|
|
||||||
|
If set to a non-zero value, specifies maximum batch size. (The
|
||||||
|
batch of packets passed to :member:`lsquic_engine_api.ea_packets_out`).
|
||||||
|
Must be no larger than 1024.
|
||||||
|
|
||||||
|
Default value is :macro:`LSQUIC_DF_MAX_BATCH_SIZE`
|
||||||
|
|
||||||
To initialize the settings structure to library defaults, use the following
|
To initialize the settings structure to library defaults, use the following
|
||||||
convenience function:
|
convenience function:
|
||||||
|
|
||||||
|
@ -1102,6 +1110,11 @@ out of date. Please check your :file:`lsquic.h` for actual values.*
|
||||||
|
|
||||||
By default, calling :member:`lsquic_stream_if.on_close()` is not delayed.
|
By default, calling :member:`lsquic_stream_if.on_close()` is not delayed.
|
||||||
|
|
||||||
|
.. macro:: LSQUIC_DF_MAX_BATCH_SIZE
|
||||||
|
|
||||||
|
By default, maximum batch size is not specified, leaving it up to the
|
||||||
|
library.
|
||||||
|
|
||||||
Receiving Packets
|
Receiving Packets
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
@ -1426,6 +1439,12 @@ Closing Connections
|
||||||
This closes the connection. :member:`lsquic_stream_if.on_conn_closed`
|
This closes the connection. :member:`lsquic_stream_if.on_conn_closed`
|
||||||
and :member:`lsquic_stream_if.on_close` callbacks will be called.
|
and :member:`lsquic_stream_if.on_close` callbacks will be called.
|
||||||
|
|
||||||
|
.. function:: void lsquic_conn_abort (lsquic_conn_t *conn)
|
||||||
|
|
||||||
|
This aborts the connection. The connection and all associated objects
|
||||||
|
will be destroyed (with necessary callbacks called) during the next time
|
||||||
|
:func:`lsquic_engine_process_conns()` is invoked.
|
||||||
|
|
||||||
Creating Streams
|
Creating Streams
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ author = u'LiteSpeed Technologies'
|
||||||
# The short X.Y version
|
# The short X.Y version
|
||||||
version = u'2.27'
|
version = u'2.27'
|
||||||
# The full version, including alpha/beta/rc tags
|
# The full version, including alpha/beta/rc tags
|
||||||
release = u'2.27.0'
|
release = u'2.27.1'
|
||||||
|
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef __LSQUIC_H__
|
#ifndef __LSQUIC_H__
|
||||||
#define __LSQUIC_H__
|
#define __LSQUIC_H__
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ extern "C" {
|
||||||
|
|
||||||
#define LSQUIC_MAJOR_VERSION 2
|
#define LSQUIC_MAJOR_VERSION 2
|
||||||
#define LSQUIC_MINOR_VERSION 27
|
#define LSQUIC_MINOR_VERSION 27
|
||||||
#define LSQUIC_PATCH_VERSION 0
|
#define LSQUIC_PATCH_VERSION 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Engine flags:
|
* Engine flags:
|
||||||
|
@ -434,6 +434,12 @@ typedef struct ssl_ctx_st * (*lsquic_lookup_cert_f)(
|
||||||
/** By default, calling on_close() is not delayed */
|
/** By default, calling on_close() is not delayed */
|
||||||
#define LSQUIC_DF_DELAY_ONCLOSE 0
|
#define LSQUIC_DF_DELAY_ONCLOSE 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* By default, maximum batch size is not specified, leaving it up to the
|
||||||
|
* library.
|
||||||
|
*/
|
||||||
|
#define LSQUIC_DF_MAX_BATCH_SIZE 0
|
||||||
|
|
||||||
struct lsquic_engine_settings {
|
struct lsquic_engine_settings {
|
||||||
/**
|
/**
|
||||||
* This is a bit mask wherein each bit corresponds to a value in
|
* This is a bit mask wherein each bit corresponds to a value in
|
||||||
|
@ -1038,6 +1044,15 @@ struct lsquic_engine_settings {
|
||||||
* Default value is @ref LSQUIC_DF_DELAY_ONCLOSE
|
* Default value is @ref LSQUIC_DF_DELAY_ONCLOSE
|
||||||
*/
|
*/
|
||||||
int es_delay_onclose;
|
int es_delay_onclose;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set to a non-zero value, specifies maximum batch size. (The
|
||||||
|
* batch of packets passed to @ref ea_packets_out() callback). Must
|
||||||
|
* be no larger than 1024.
|
||||||
|
*
|
||||||
|
* Default value is @ref LSQUIC_DF_MAX_BATCH_SIZE
|
||||||
|
*/
|
||||||
|
unsigned es_max_batch_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize `settings' to default values */
|
/* Initialize `settings' to default values */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef __LSQUIC_TYPES_H__
|
#ifndef __LSQUIC_TYPES_H__
|
||||||
#define __LSQUIC_TYPES_H__
|
#define __LSQUIC_TYPES_H__
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSXPACK_HEADER_H_v206
|
#ifndef LSXPACK_HEADER_H_v206
|
||||||
#define LSXPACK_HEADER_H_v206
|
#define LSXPACK_HEADER_H_v206
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
add_subdirectory(liblsquic)
|
add_subdirectory(liblsquic)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE.
|
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||||
SET(lsquic_STAT_SRCS
|
SET(lsquic_STAT_SRCS
|
||||||
ls-qpack/lsqpack.c
|
ls-qpack/lsqpack.c
|
||||||
lsquic_adaptive_cc.c
|
lsquic_adaptive_cc.c
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
/* Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||||
* Use of this source code is governed by a BSD-style license that can be
|
* Use of this source code is governed by a BSD-style license that can be
|
||||||
* found in the LICENSE.chrome file.
|
* found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
|
|
||||||
/* libfiu - Fault Injection in Userspace
|
/* libfiu - Fault Injection in Userspace
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#line 2 "ls-sfparser.c"
|
#line 2 "ls-sfparser.c"
|
||||||
#line 2 "ls-sfparser.l"
|
#line 2 "ls-sfparser.l"
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/* lsquic_adaptive_cc.c -- adaptive congestion controller */
|
/* lsquic_adaptive_cc.c -- adaptive congestion controller */
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_adaptive_cc.h -- Adaptive congestion controller
|
* lsquic_adaptive_cc.h -- Adaptive congestion controller
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_alarmset.c -- A set of alarms
|
* lsquic_alarmset.c -- A set of alarms
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_alarmset.h -- A set of alarms
|
* lsquic_alarmset.h -- A set of alarms
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_arr.c
|
* lsquic_arr.c
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_arr.h -- Array
|
* lsquic_arr.h -- Array
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_attq.c -- Advisory Tick Time Queue
|
* lsquic_attq.c -- Advisory Tick Time Queue
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_attq.h -- Advisory Tick Time Queue
|
* lsquic_attq.h -- Advisory Tick Time Queue
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
// Copyright 2016 The Chromium Authors. All rights reserved.
|
// Copyright 2016 The Chromium Authors. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE.chrome file.
|
// found in the LICENSE.chrome file.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_BBR_H
|
#ifndef LSQUIC_BBR_H
|
||||||
#define LSQUIC_BBR_H
|
#define LSQUIC_BBR_H
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_BW_SAMPLER_H
|
#ifndef LSQUIC_BW_SAMPLER_H
|
||||||
#define LSQUIC_BW_SAMPLER_H 1
|
#define LSQUIC_BW_SAMPLER_H 1
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_BYTESWAP_H
|
#ifndef LSQUIC_BYTESWAP_H
|
||||||
#define LSQUIC_BYTESWAP_H 1
|
#define LSQUIC_BYTESWAP_H 1
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* Stream/crypto handshake adapter for the client side.
|
* Stream/crypto handshake adapter for the client side.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* Stream/crypto handshake adapter for the client side.
|
* Stream/crypto handshake adapter for the client side.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_cong_ctl.h -- congestion control interface
|
* lsquic_cong_ctl.h -- congestion control interface
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_conn.h -- Connection interface
|
* lsquic_conn.h -- Connection interface
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_conn_flow.h -- Connection flow control-related functions
|
* lsquic_conn_flow.h -- Connection flow control-related functions
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_conn_public.h -- Connection's "public interface"
|
* lsquic_conn_public.h -- Connection's "public interface"
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_crand.h -- cached random bytes
|
* lsquic_crand.h -- cached random bytes
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef __LSQUIC_CRT_COMPRESS_H__
|
#ifndef __LSQUIC_CRT_COMPRESS_H__
|
||||||
#define __LSQUIC_CRT_COMPRESS_H__
|
#define __LSQUIC_CRT_COMPRESS_H__
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
|
|
||||||
#ifndef __LSQUIC_CRYPTO_H__
|
#ifndef __LSQUIC_CRYPTO_H__
|
||||||
#define __LSQUIC_CRYPTO_H__
|
#define __LSQUIC_CRYPTO_H__
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_cubic.c -- LSQUIC CUBIC implementation.
|
* lsquic_cubic.c -- LSQUIC CUBIC implementation.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_cubic.h -- CUBIC congestion control protocol.
|
* lsquic_cubic.h -- CUBIC congestion control protocol.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_data_in_if.h -- DATA in interface
|
* lsquic_data_in_if.h -- DATA in interface
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_di_error.c -- A placeholder when things go wrong
|
* lsquic_di_error.c -- A placeholder when things go wrong
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_di_hash.c -- Copy incoming data into a hash
|
* lsquic_di_hash.c -- Copy incoming data into a hash
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_di_nocopy.c -- The "no-copy" data in stream.
|
* lsquic_di_nocopy.c -- The "no-copy" data in stream.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_ENC_SESS_H
|
#ifndef LSQUIC_ENC_SESS_H
|
||||||
#define LSQUIC_ENC_SESS_H 1
|
#define LSQUIC_ENC_SESS_H 1
|
||||||
|
|
||||||
|
@ -295,7 +295,7 @@ struct enc_session_funcs_iquic
|
||||||
void *(crypto_streams)[4],
|
void *(crypto_streams)[4],
|
||||||
const struct crypto_stream_if *,
|
const struct crypto_stream_if *,
|
||||||
const struct lsquic_cid *odcid,
|
const struct lsquic_cid *odcid,
|
||||||
const struct lsquic_cid *iscid );
|
const struct lsquic_cid *iscid);
|
||||||
|
|
||||||
void
|
void
|
||||||
(*esfi_shake_stream)(enc_session_t *, struct lsquic_stream *,
|
(*esfi_shake_stream)(enc_session_t *, struct lsquic_stream *,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_enc_sess_ietf.c -- Crypto session for IETF QUIC
|
* lsquic_enc_sess_ietf.c -- Crypto session for IETF QUIC
|
||||||
*/
|
*/
|
||||||
|
@ -1014,7 +1014,7 @@ iquic_esfi_create_server (struct lsquic_engine_public *enpub,
|
||||||
void *(crypto_streams)[4],
|
void *(crypto_streams)[4],
|
||||||
const struct crypto_stream_if *cryst_if,
|
const struct crypto_stream_if *cryst_if,
|
||||||
const struct lsquic_cid *odcid,
|
const struct lsquic_cid *odcid,
|
||||||
const struct lsquic_cid *iscid )
|
const struct lsquic_cid *iscid)
|
||||||
{
|
{
|
||||||
struct enc_sess_iquic *enc_sess;
|
struct enc_sess_iquic *enc_sess;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <vc_compat.h>
|
#include <vc_compat.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_eng_hist.h - Engine history.
|
* lsquic_eng_hist.h - Engine history.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_engine.c - QUIC engine
|
* lsquic_engine.c - QUIC engine
|
||||||
*/
|
*/
|
||||||
|
@ -101,9 +101,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||||
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||||
|
|
||||||
/* The batch of outgoing packets grows and shrinks dynamically */
|
/* The batch of outgoing packets grows and shrinks dynamically */
|
||||||
/* Batch sizes must be powers of two */
|
/* Batch sizes do not have to be powers of two */
|
||||||
#define MAX_OUT_BATCH_SIZE 1024
|
#define MAX_OUT_BATCH_SIZE 1024
|
||||||
#define MIN_OUT_BATCH_SIZE 4
|
#define MIN_OUT_BATCH_SIZE 4
|
||||||
#define INITIAL_OUT_BATCH_SIZE 32
|
#define INITIAL_OUT_BATCH_SIZE 32
|
||||||
|
@ -247,6 +248,7 @@ struct lsquic_engine
|
||||||
struct min_heap conns_out;
|
struct min_heap conns_out;
|
||||||
struct eng_hist history;
|
struct eng_hist history;
|
||||||
unsigned batch_size;
|
unsigned batch_size;
|
||||||
|
unsigned min_batch_size, max_batch_size;
|
||||||
struct lsquic_conn *curr_conn;
|
struct lsquic_conn *curr_conn;
|
||||||
struct pr_queue *pr_queue;
|
struct pr_queue *pr_queue;
|
||||||
struct attq *attq;
|
struct attq *attq;
|
||||||
|
@ -482,6 +484,14 @@ lsquic_engine_check_settings (const struct lsquic_engine_settings *settings,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings->es_max_batch_size > MAX_OUT_BATCH_SIZE)
|
||||||
|
{
|
||||||
|
if (err_buf)
|
||||||
|
snprintf(err_buf, err_buf_sz, "max batch size is greater than "
|
||||||
|
"the allowed maximum of %u", (unsigned) MAX_OUT_BATCH_SIZE);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -699,7 +709,19 @@ lsquic_engine_new (unsigned flags,
|
||||||
}
|
}
|
||||||
engine->attq = lsquic_attq_create();
|
engine->attq = lsquic_attq_create();
|
||||||
eng_hist_init(&engine->history);
|
eng_hist_init(&engine->history);
|
||||||
|
if (engine->pub.enp_settings.es_max_batch_size)
|
||||||
|
{
|
||||||
|
engine->max_batch_size = engine->pub.enp_settings.es_max_batch_size;
|
||||||
|
engine->min_batch_size = MIN(4, engine->max_batch_size);
|
||||||
|
engine->batch_size = MAX(engine->max_batch_size / 4,
|
||||||
|
engine->min_batch_size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
engine->min_batch_size = MIN_OUT_BATCH_SIZE;
|
||||||
|
engine->max_batch_size = MAX_OUT_BATCH_SIZE;
|
||||||
engine->batch_size = INITIAL_OUT_BATCH_SIZE;
|
engine->batch_size = INITIAL_OUT_BATCH_SIZE;
|
||||||
|
}
|
||||||
if (engine->pub.enp_settings.es_honor_prst)
|
if (engine->pub.enp_settings.es_honor_prst)
|
||||||
{
|
{
|
||||||
engine->pub.enp_srst_hash = lsquic_hash_create();
|
engine->pub.enp_srst_hash = lsquic_hash_create();
|
||||||
|
@ -799,14 +821,14 @@ log_packet_checksum (const lsquic_cid_t *cid, const char *direction,
|
||||||
static void
|
static void
|
||||||
grow_batch_size (struct lsquic_engine *engine)
|
grow_batch_size (struct lsquic_engine *engine)
|
||||||
{
|
{
|
||||||
engine->batch_size <<= engine->batch_size < MAX_OUT_BATCH_SIZE;
|
engine->batch_size = MIN(engine->batch_size * 2, engine->max_batch_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shrink_batch_size (struct lsquic_engine *engine)
|
shrink_batch_size (struct lsquic_engine *engine)
|
||||||
{
|
{
|
||||||
engine->batch_size >>= engine->batch_size > MIN_OUT_BATCH_SIZE;
|
engine->batch_size = MAX(engine->batch_size / 2, engine->min_batch_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_engine_public.h -- Engine's "public interface"
|
* lsquic_engine_public.h -- Engine's "public interface"
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_ev_log.h -- Event logger
|
* lsquic_ev_log.h -- Event logger
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frab_list.c -- List of buffer for simple reading and writing
|
* lsquic_frab_list.c -- List of buffer for simple reading and writing
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frab_list.h -- List of buffer for simple reading and writing
|
* lsquic_frab_list.h -- List of buffer for simple reading and writing
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "lsquic_frame_common.h"
|
#include "lsquic_frame_common.h"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frame_common.h
|
* lsquic_frame_common.h
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frame_reader.c -- Read HTTP frames from stream
|
* lsquic_frame_reader.c -- Read HTTP frames from stream
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frame_reader.h -- Read HTTP frames from stream
|
* lsquic_frame_reader.h -- Read HTTP frames from stream
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frame_writer.c -- write frames to HEADERS stream.
|
* lsquic_frame_writer.c -- write frames to HEADERS stream.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_frame_writer.h -- write frames to HEADERS stream.
|
* lsquic_frame_writer.h -- write frames to HEADERS stream.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_full_conn.c -- A "full" connection object has full functionality
|
* lsquic_full_conn.c -- A "full" connection object has full functionality
|
||||||
*/
|
*/
|
||||||
|
@ -3768,6 +3768,7 @@ full_conn_ci_abort (struct lsquic_conn *lconn)
|
||||||
struct full_conn *conn = (struct full_conn *) lconn;
|
struct full_conn *conn = (struct full_conn *) lconn;
|
||||||
LSQ_INFO("User aborted connection");
|
LSQ_INFO("User aborted connection");
|
||||||
conn->fc_flags |= FC_ABORTED;
|
conn->fc_flags |= FC_ABORTED;
|
||||||
|
lsquic_engine_add_conn_to_tickable(conn->fc_enpub, lconn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4323,6 +4324,13 @@ full_conn_ci_is_tickable (lsquic_conn_t *lconn)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (conn->fc_flags & FC_IMMEDIATE_CLOSE_FLAGS)
|
||||||
|
{
|
||||||
|
LSQ_DEBUG("tickable: immediate close flags: 0x%X",
|
||||||
|
(unsigned) (conn->fc_flags & FC_IMMEDIATE_CLOSE_FLAGS));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
LSQ_DEBUG("not tickable");
|
LSQ_DEBUG("not tickable");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_FULL_CONN_H
|
#ifndef LSQUIC_FULL_CONN_H
|
||||||
#define LSQUIC_FULL_CONN_H
|
#define LSQUIC_FULL_CONN_H
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_full_conn_ietf.c -- IETF QUIC connection.
|
* lsquic_full_conn_ietf.c -- IETF QUIC connection.
|
||||||
*/
|
*/
|
||||||
|
@ -2931,6 +2931,7 @@ ietf_full_conn_ci_abort (struct lsquic_conn *lconn)
|
||||||
struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn;
|
struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn;
|
||||||
LSQ_INFO("User aborted connection");
|
LSQ_INFO("User aborted connection");
|
||||||
conn->ifc_flags |= IFC_ABORTED;
|
conn->ifc_flags |= IFC_ABORTED;
|
||||||
|
lsquic_engine_add_conn_to_tickable(conn->ifc_enpub, lconn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4114,6 +4115,13 @@ ietf_full_conn_ci_is_tickable (struct lsquic_conn *lconn)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS)
|
||||||
|
{
|
||||||
|
LSQ_DEBUG("tickable: immediate close flags: 0x%X",
|
||||||
|
(unsigned) (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
LSQ_DEBUG("not tickable");
|
LSQ_DEBUG("not tickable");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* Global state
|
* Global state
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#define _GNU_SOURCE /* for memmem */
|
#define _GNU_SOURCE /* for memmem */
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_HANDSHAKE_H
|
#ifndef LSQUIC_HANDSHAKE_H
|
||||||
#define LSQUIC_HANDSHAKE_H 1
|
#define LSQUIC_HANDSHAKE_H 1
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_hash.c
|
* lsquic_hash.c
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_hash.c -- A generic hash
|
* lsquic_hash.c -- A generic hash
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_hcsi_reader.h -- HTTP Control Stream Incoming (HCSI) reader
|
* lsquic_hcsi_reader.h -- HTTP Control Stream Incoming (HCSI) reader
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_hcso_writer.c - write to outgoing HTTP Control Stream
|
* lsquic_hcso_writer.c - write to outgoing HTTP Control Stream
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* lsquic_hcso_writer.h
|
* lsquic_hcso_writer.h
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
#ifndef LSQUIC_HEADERS_H
|
#ifndef LSQUIC_HEADERS_H
|
||||||
#define LSQUIC_HEADERS_H 1
|
#define LSQUIC_HEADERS_H 1
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||||
/*
|
/*
|
||||||
* HEADERS stream logic
|
* HEADERS stream logic
|
||||||
*/
|
*/
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue