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
|
@ -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)
|
||||
|
||||
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
|
||||
ls-qpack/lsqpack.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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* 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
|
||||
*
|
||||
|
|
|
@ -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.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
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
#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
|
||||
*
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// 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
|
||||
#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 <inttypes.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
|
||||
#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
|
||||
#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 <stdint.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.
|
||||
*
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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 <inttypes.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
|
||||
*
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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"
|
||||
*
|
||||
|
|
|
@ -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 <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
|
||||
*
|
||||
|
|
|
@ -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 <stdbool.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__
|
||||
#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 <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__
|
||||
#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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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
|
||||
#define LSQUIC_ENC_SESS_H 1
|
||||
|
||||
|
@ -295,7 +295,7 @@ struct enc_session_funcs_iquic
|
|||
void *(crypto_streams)[4],
|
||||
const struct crypto_stream_if *,
|
||||
const struct lsquic_cid *odcid,
|
||||
const struct lsquic_cid *iscid );
|
||||
const struct lsquic_cid *iscid);
|
||||
|
||||
void
|
||||
(*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 <stdint.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
|
||||
*/
|
||||
|
@ -1014,7 +1014,7 @@ iquic_esfi_create_server (struct lsquic_engine_public *enpub,
|
|||
void *(crypto_streams)[4],
|
||||
const struct crypto_stream_if *cryst_if,
|
||||
const struct lsquic_cid *odcid,
|
||||
const struct lsquic_cid *iscid )
|
||||
const struct lsquic_cid *iscid)
|
||||
{
|
||||
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>
|
||||
#ifdef WIN32
|
||||
#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.
|
||||
*
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
@ -101,9 +101,10 @@
|
|||
#endif
|
||||
|
||||
#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 */
|
||||
/* Batch sizes must be powers of two */
|
||||
/* Batch sizes do not have to be powers of two */
|
||||
#define MAX_OUT_BATCH_SIZE 1024
|
||||
#define MIN_OUT_BATCH_SIZE 4
|
||||
#define INITIAL_OUT_BATCH_SIZE 32
|
||||
|
@ -247,6 +248,7 @@ struct lsquic_engine
|
|||
struct min_heap conns_out;
|
||||
struct eng_hist history;
|
||||
unsigned batch_size;
|
||||
unsigned min_batch_size, max_batch_size;
|
||||
struct lsquic_conn *curr_conn;
|
||||
struct pr_queue *pr_queue;
|
||||
struct attq *attq;
|
||||
|
@ -482,6 +484,14 @@ lsquic_engine_check_settings (const struct lsquic_engine_settings *settings,
|
|||
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;
|
||||
}
|
||||
|
||||
|
@ -699,7 +709,19 @@ lsquic_engine_new (unsigned flags,
|
|||
}
|
||||
engine->attq = lsquic_attq_create();
|
||||
eng_hist_init(&engine->history);
|
||||
engine->batch_size = INITIAL_OUT_BATCH_SIZE;
|
||||
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;
|
||||
}
|
||||
if (engine->pub.enp_settings.es_honor_prst)
|
||||
{
|
||||
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
|
||||
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
|
||||
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"
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
#ifndef WIN32
|
||||
#include <arpa/inet.h>
|
||||
#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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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 "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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
@ -3768,6 +3768,7 @@ full_conn_ci_abort (struct lsquic_conn *lconn)
|
|||
struct full_conn *conn = (struct full_conn *) lconn;
|
||||
LSQ_INFO("User aborted connection");
|
||||
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;
|
||||
}
|
||||
|
||||
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");
|
||||
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
|
||||
#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.
|
||||
*/
|
||||
|
@ -2931,6 +2931,7 @@ ietf_full_conn_ci_abort (struct lsquic_conn *lconn)
|
|||
struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn;
|
||||
LSQ_INFO("User aborted connection");
|
||||
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;
|
||||
}
|
||||
|
||||
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");
|
||||
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
|
||||
*/
|
||||
|
|
|
@ -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 */
|
||||
|
||||
#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
|
||||
#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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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 <inttypes.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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
#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
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_headers_stream.h -- HEADERS stream 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 <stddef.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_HKDF_H
|
||||
#define LSQUIC_HKDF_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_hpi.c - implementation of (Extensible) HTTP Priority Iterator.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_hpi.h - HPI: (Extensible) HTTP Priority Iterator
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_hq.h -- HTTP/3 (originally "HTTP over QUIC" or HQ) types
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_hspack_valid.c -- Handshake packet validator.
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Various HTTP-related functions. */
|
||||
|
||||
#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. */
|
||||
#include <assert.h>
|
||||
#include <ctype.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_HTTP1X_IF_H
|
||||
#define LSQUIC_HTTP1X_IF_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_IETF_H
|
||||
#define LSQUIC_IETF_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_INT_TYPES_H
|
||||
#define LSQUIC_INT_TYPES_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 Logger implementation.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_logger.h -- logging functions and macros.
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_malo.c -- malo allocator implementation.
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_malo.h -- Fast allocator for fixed-sized objects.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_min_heap.c
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_min_heap.h -- Min-heap for pointers
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_mini_conn.c -- Mini connection.
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_mini_conn.h -- Mini-connection
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_mini_conn_ietf.c -- Mini connection used by the IETF QUIC
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_mini_conn_ietf.h -- Mini connection used by the IETF QUIC
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* Based on Google code released under BSD license here:
|
||||
* https://groups.google.com/forum/#!topic/bbr-dev/3RTgkzi5ZD8
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
#ifndef LSQUIC_MINMAX_H
|
||||
#define LSQUIC_MINMAX_H
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
|
||||
/*
|
||||
* lsquic_mm.c -- Memory manager.
|
||||
*/
|
||||
|
|
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