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:
Dmitri Tikhonov 2021-01-06 09:00:05 -05:00
parent 6511378725
commit 06b2a2363e
277 changed files with 368 additions and 283 deletions

View file

@ -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
=========== ===========

View file

@ -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.

View file

@ -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)

View file

@ -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:

View file

@ -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
=============== ===============

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
* *

View file

@ -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.

View file

@ -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.

View file

@ -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>

View file

@ -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
*/ */

View file

@ -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>

View file

@ -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

View file

@ -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))

View file

@ -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.
*/ */

View file

@ -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
---------------- ----------------

View file

@ -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 ---------------------------------------------------

View 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_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 */

View 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_TYPES_H__ #ifndef __LSQUIC_TYPES_H__
#define __LSQUIC_TYPES_H__ #define __LSQUIC_TYPES_H__

View file

@ -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

View file

@ -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)

View file

@ -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

View 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.

View 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.

View 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.

View 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.

View 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.

View 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.

View 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
* *

View file

@ -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"
/* /*

View file

@ -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

View file

@ -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>

View file

@ -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
* *

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
* *

View file

@ -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
*/ */

View file

@ -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.

View 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

View file

@ -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>

View 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_BW_SAMPLER_H #ifndef LSQUIC_BW_SAMPLER_H
#define LSQUIC_BW_SAMPLER_H 1 #define LSQUIC_BW_SAMPLER_H 1

View 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_BYTESWAP_H #ifndef LSQUIC_BYTESWAP_H
#define LSQUIC_BYTESWAP_H 1 #define LSQUIC_BYTESWAP_H 1

View file

@ -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>

View file

@ -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.
* *

View file

@ -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.
*/ */

View file

@ -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
*/ */

View file

@ -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>

View file

@ -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
* *

View file

@ -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
*/ */

View file

@ -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"
* *

View file

@ -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>

View file

@ -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
* *

View file

@ -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>

View 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_CRT_COMPRESS_H__ #ifndef __LSQUIC_CRT_COMPRESS_H__
#define __LSQUIC_CRT_COMPRESS_H__ #define __LSQUIC_CRT_COMPRESS_H__

View file

@ -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>

View 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_CRYPTO_H__ #ifndef __LSQUIC_CRYPTO_H__
#define __LSQUIC_CRYPTO_H__ #define __LSQUIC_CRYPTO_H__

View file

@ -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.
*/ */

View file

@ -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.
*/ */

View file

@ -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
*/ */

View file

@ -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
* *

View file

@ -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
* *

View file

@ -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.
* *

View 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_ENC_SESS_H #ifndef LSQUIC_ENC_SESS_H
#define LSQUIC_ENC_SESS_H 1 #define LSQUIC_ENC_SESS_H 1

View file

@ -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>

View file

@ -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
*/ */

View file

@ -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>

View file

@ -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.
* *

View file

@ -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);
} }

View file

@ -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"
* *

View file

@ -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

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
* *

View file

@ -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"

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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.
* *

View file

@ -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.
*/ */

View file

@ -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;
} }

View 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_FULL_CONN_H #ifndef LSQUIC_FULL_CONN_H
#define LSQUIC_FULL_CONN_H #define LSQUIC_FULL_CONN_H

View file

@ -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;
} }

View file

@ -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
*/ */

View file

@ -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>

View 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_HANDSHAKE_H #ifndef LSQUIC_HANDSHAKE_H
#define LSQUIC_HANDSHAKE_H 1 #define LSQUIC_HANDSHAKE_H 1

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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>

View file

@ -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
*/ */

View file

@ -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
*/ */

View file

@ -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
*/ */

View 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_HEADERS_H #ifndef LSQUIC_HEADERS_H
#define LSQUIC_HEADERS_H 1 #define LSQUIC_HEADERS_H 1

View file

@ -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