From 7d09751dbbcb4d558eec19704a5a5e15c3fc9e7c Mon Sep 17 00:00:00 2001 From: Dmitri Tikhonov Date: Thu, 9 Jan 2020 11:52:25 -0500 Subject: [PATCH] Release 2.8.7 - [BUGFIX] Initial packet size check for IETF mini conn applies to UDP payload, not QUIC packet. - Support old and new school loss_bits transport parameter. - Use Q run length of 64 as suggested in the loss bits Draft. - Undo square wave count when packet is delayed. - Code cleanup; minor fixes. --- APIs.txt | 2 +- CHANGELOG | 9 +++ CMakeLists.txt | 2 +- CONTRIBUTORS.txt | 2 +- EXAMPLES.txt | 2 +- LICENSE | 2 +- include/lsquic.h | 14 ++-- include/lsquic_types.h | 2 +- src/CMakeLists.txt | 2 +- src/liblsquic/CMakeLists.txt | 2 +- src/liblsquic/common_cert_set_2.c | 2 +- src/liblsquic/common_cert_set_2a.inc | 2 +- src/liblsquic/common_cert_set_2b.inc | 2 +- src/liblsquic/common_cert_set_3.c | 2 +- src/liblsquic/common_cert_set_3a.inc | 2 +- src/liblsquic/common_cert_set_3b.inc | 2 +- src/liblsquic/fiu-local.h | 2 +- src/liblsquic/lsquic_alarmset.c | 2 +- src/liblsquic/lsquic_alarmset.h | 2 +- src/liblsquic/lsquic_arr.c | 2 +- src/liblsquic/lsquic_arr.h | 2 +- src/liblsquic/lsquic_attq.c | 2 +- src/liblsquic/lsquic_attq.h | 2 +- src/liblsquic/lsquic_bbr.c | 2 +- src/liblsquic/lsquic_bbr.h | 2 +- src/liblsquic/lsquic_bw_sampler.c | 2 +- src/liblsquic/lsquic_bw_sampler.h | 2 +- src/liblsquic/lsquic_byteswap.h | 2 +- src/liblsquic/lsquic_cfcw.c | 2 +- src/liblsquic/lsquic_chsk_stream.c | 2 +- src/liblsquic/lsquic_chsk_stream.h | 2 +- src/liblsquic/lsquic_cong_ctl.h | 2 +- src/liblsquic/lsquic_conn.c | 2 +- src/liblsquic/lsquic_conn.h | 2 +- src/liblsquic/lsquic_conn_flow.h | 2 +- src/liblsquic/lsquic_conn_public.h | 2 +- src/liblsquic/lsquic_crt_compress.c | 2 +- src/liblsquic/lsquic_crt_compress.h | 2 +- src/liblsquic/lsquic_crypto.c | 2 +- src/liblsquic/lsquic_crypto.h | 2 +- src/liblsquic/lsquic_cubic.c | 2 +- src/liblsquic/lsquic_cubic.h | 2 +- src/liblsquic/lsquic_data_in_if.h | 2 +- src/liblsquic/lsquic_di_error.c | 2 +- src/liblsquic/lsquic_di_hash.c | 2 +- src/liblsquic/lsquic_di_nocopy.c | 2 +- src/liblsquic/lsquic_enc_sess.h | 2 +- src/liblsquic/lsquic_enc_sess_common.c | 2 +- src/liblsquic/lsquic_enc_sess_ietf.c | 88 +++++++++++++-------- src/liblsquic/lsquic_eng_hist.c | 2 +- src/liblsquic/lsquic_eng_hist.h | 2 +- src/liblsquic/lsquic_engine.c | 31 +++++--- src/liblsquic/lsquic_engine_public.h | 2 +- src/liblsquic/lsquic_ev_log.c | 2 +- src/liblsquic/lsquic_ev_log.h | 2 +- src/liblsquic/lsquic_frab_list.c | 2 +- src/liblsquic/lsquic_frab_list.h | 2 +- src/liblsquic/lsquic_frame_common.c | 2 +- src/liblsquic/lsquic_frame_common.h | 2 +- src/liblsquic/lsquic_frame_reader.c | 5 +- src/liblsquic/lsquic_frame_reader.h | 2 +- src/liblsquic/lsquic_frame_writer.c | 2 +- src/liblsquic/lsquic_frame_writer.h | 2 +- src/liblsquic/lsquic_full_conn.c | 2 +- src/liblsquic/lsquic_full_conn.h | 2 +- src/liblsquic/lsquic_full_conn_ietf.c | 5 +- src/liblsquic/lsquic_global.c | 2 +- src/liblsquic/lsquic_handshake.c | 34 +------- src/liblsquic/lsquic_handshake.h | 2 +- src/liblsquic/lsquic_hash.c | 2 +- src/liblsquic/lsquic_hash.h | 2 +- src/liblsquic/lsquic_hcsi_reader.c | 2 +- src/liblsquic/lsquic_hcsi_reader.h | 2 +- src/liblsquic/lsquic_hcso_writer.c | 14 +++- src/liblsquic/lsquic_hcso_writer.h | 2 +- src/liblsquic/lsquic_headers.h | 2 +- src/liblsquic/lsquic_headers_stream.c | 4 +- src/liblsquic/lsquic_headers_stream.h | 2 +- src/liblsquic/lsquic_hkdf.c | 2 +- src/liblsquic/lsquic_hkdf.h | 2 +- src/liblsquic/lsquic_hq.h | 2 +- src/liblsquic/lsquic_hspack_valid.c | 2 +- src/liblsquic/lsquic_http1x_if.c | 2 +- src/liblsquic/lsquic_http1x_if.h | 2 +- src/liblsquic/lsquic_ietf.h | 2 +- src/liblsquic/lsquic_int_types.h | 2 +- src/liblsquic/lsquic_logger.c | 2 +- src/liblsquic/lsquic_logger.h | 2 +- src/liblsquic/lsquic_malo.c | 2 +- src/liblsquic/lsquic_malo.h | 2 +- src/liblsquic/lsquic_min_heap.c | 2 +- src/liblsquic/lsquic_min_heap.h | 2 +- src/liblsquic/lsquic_mini_conn.c | 2 +- src/liblsquic/lsquic_mini_conn.h | 2 +- src/liblsquic/lsquic_mini_conn_ietf.c | 30 +++---- src/liblsquic/lsquic_mini_conn_ietf.h | 5 +- src/liblsquic/lsquic_minmax.c | 2 +- src/liblsquic/lsquic_minmax.h | 2 +- src/liblsquic/lsquic_mm.c | 2 +- src/liblsquic/lsquic_mm.h | 2 +- src/liblsquic/lsquic_pacer.c | 2 +- src/liblsquic/lsquic_pacer.h | 2 +- src/liblsquic/lsquic_packet_common.c | 2 +- src/liblsquic/lsquic_packet_common.h | 2 +- src/liblsquic/lsquic_packet_gquic.c | 2 +- src/liblsquic/lsquic_packet_gquic.h | 2 +- src/liblsquic/lsquic_packet_ietf.h | 2 +- src/liblsquic/lsquic_packet_in.c | 2 +- src/liblsquic/lsquic_packet_in.h | 2 +- src/liblsquic/lsquic_packet_out.c | 2 +- src/liblsquic/lsquic_packet_out.h | 2 +- src/liblsquic/lsquic_packints.c | 2 +- src/liblsquic/lsquic_packints.h | 2 +- src/liblsquic/lsquic_parse.h | 5 +- src/liblsquic/lsquic_parse_Q046.c | 3 +- src/liblsquic/lsquic_parse_Q050.c | 3 +- src/liblsquic/lsquic_parse_common.c | 2 +- src/liblsquic/lsquic_parse_common.h | 2 +- src/liblsquic/lsquic_parse_gquic_be.c | 11 ++- src/liblsquic/lsquic_parse_gquic_be.h | 6 +- src/liblsquic/lsquic_parse_gquic_common.c | 2 +- src/liblsquic/lsquic_parse_ietf.h | 2 +- src/liblsquic/lsquic_parse_ietf_v1.c | 18 ++++- src/liblsquic/lsquic_parse_iquic_common.c | 2 +- src/liblsquic/lsquic_pr_queue.c | 2 +- src/liblsquic/lsquic_pr_queue.h | 2 +- src/liblsquic/lsquic_purga.c | 2 +- src/liblsquic/lsquic_purga.h | 2 +- src/liblsquic/lsquic_push_promise.h | 2 +- src/liblsquic/lsquic_qdec_hdl.c | 6 +- src/liblsquic/lsquic_qdec_hdl.h | 2 +- src/liblsquic/lsquic_qenc_hdl.c | 2 +- src/liblsquic/lsquic_qenc_hdl.h | 2 +- src/liblsquic/lsquic_qlog.c | 2 +- src/liblsquic/lsquic_qlog.h | 2 +- src/liblsquic/lsquic_qpack_dec_logger.h | 2 +- src/liblsquic/lsquic_qpack_enc_logger.h | 2 +- src/liblsquic/lsquic_qtags.h | 2 +- src/liblsquic/lsquic_rechist.c | 2 +- src/liblsquic/lsquic_rechist.h | 2 +- src/liblsquic/lsquic_rtt.c | 2 +- src/liblsquic/lsquic_rtt.h | 2 +- src/liblsquic/lsquic_send_ctl.c | 7 +- src/liblsquic/lsquic_send_ctl.h | 2 +- src/liblsquic/lsquic_senhist.c | 2 +- src/liblsquic/lsquic_senhist.h | 2 +- src/liblsquic/lsquic_set.c | 2 +- src/liblsquic/lsquic_set.h | 2 +- src/liblsquic/lsquic_sfcw.c | 2 +- src/liblsquic/lsquic_sfcw.h | 2 +- src/liblsquic/lsquic_shsk_stream.c | 2 +- src/liblsquic/lsquic_shsk_stream.h | 2 +- src/liblsquic/lsquic_sizes.h | 2 +- src/liblsquic/lsquic_spi.c | 2 +- src/liblsquic/lsquic_spi.h | 2 +- src/liblsquic/lsquic_stock_shi.c | 2 +- src/liblsquic/lsquic_stock_shi.h | 2 +- src/liblsquic/lsquic_str.c | 2 +- src/liblsquic/lsquic_str.h | 2 +- src/liblsquic/lsquic_stream.c | 2 +- src/liblsquic/lsquic_stream.h | 2 +- src/liblsquic/lsquic_tokgen.c | 2 +- src/liblsquic/lsquic_tokgen.h | 2 +- src/liblsquic/lsquic_trans_params.c | 50 ++++++++++-- src/liblsquic/lsquic_trans_params.h | 8 +- src/liblsquic/lsquic_util.c | 2 +- src/liblsquic/lsquic_util.h | 2 +- src/liblsquic/lsquic_varint.c | 2 +- src/liblsquic/lsquic_varint.h | 2 +- src/liblsquic/lsquic_ver_neg.h | 2 +- src/liblsquic/lsquic_version.c | 2 +- src/liblsquic/lsquic_version.h | 2 +- src/liblsquic/lsquic_xxhash.c | 2 +- src/liblsquic/lsquic_xxhash.h | 2 +- src/lshpack/lshpack.c | 2 +- src/lshpack/lshpack.h | 2 +- test/CMakeLists.txt | 2 +- test/echo_client.c | 2 +- test/echo_server.c | 2 +- test/http_client.c | 2 +- test/http_server.c | 2 +- test/md5_client.c | 2 +- test/md5_server.c | 2 +- test/prog.c | 2 +- test/prog.h | 2 +- test/test_cert.c | 2 +- test/test_cert.h | 2 +- test/test_common.c | 2 +- test/test_common.h | 2 +- test/unittests/CMakeLists.txt | 2 +- test/unittests/graph_cubic.c | 2 +- test/unittests/mini_parse.c | 2 +- test/unittests/test_ack.c | 2 +- test/unittests/test_ack_merge.c | 2 +- test/unittests/test_ackgen_gquic_be.c | 2 +- test/unittests/test_ackparse_gquic_be.c | 2 +- test/unittests/test_ackparse_ietf.c | 2 +- test/unittests/test_alarmset.c | 2 +- test/unittests/test_alt_svc_ver.c | 2 +- test/unittests/test_arr.c | 2 +- test/unittests/test_attq.c | 2 +- test/unittests/test_blocked_gquic_be.c | 2 +- test/unittests/test_bw_sampler.c | 2 +- test/unittests/test_chlo_gen.c | 2 +- test/unittests/test_clear_aead.c | 2 +- test/unittests/test_conn_close_gquic_be.c | 2 +- test/unittests/test_conn_hash.c | 2 +- test/unittests/test_crypto_gen.c | 2 +- test/unittests/test_cubic.c | 2 +- test/unittests/test_dec.c | 2 +- test/unittests/test_di_nocopy.c | 2 +- test/unittests/test_elision.c | 2 +- test/unittests/test_engine_ctor.c | 2 +- test/unittests/test_export_key.c | 2 +- test/unittests/test_frame_chop.c | 2 +- test/unittests/test_frame_reader.c | 2 +- test/unittests/test_frame_rw.c | 2 +- test/unittests/test_frame_writer.c | 2 +- test/unittests/test_goaway_gquic_be.c | 2 +- test/unittests/test_h3_framing.c | 2 +- test/unittests/test_hcsi_reader.c | 2 +- test/unittests/test_hkdf.c | 2 +- test/unittests/test_lsquic_hash.c | 2 +- test/unittests/test_malo.c | 2 +- test/unittests/test_min_heap.c | 2 +- test/unittests/test_minmax.c | 2 +- test/unittests/test_packet_out.c | 2 +- test/unittests/test_packno_len.c | 2 +- test/unittests/test_parse.c | 2 +- test/unittests/test_parse_packet_in.c | 2 +- test/unittests/test_purga.c | 2 +- test/unittests/test_qlog.c | 2 +- test/unittests/test_quic_be_floats.c | 2 +- test/unittests/test_rechist.c | 2 +- test/unittests/test_reg_pkt_headergen.c | 2 +- test/unittests/test_rst_stream_gquic_be.c | 2 +- test/unittests/test_rst_stream_ietf.c | 2 +- test/unittests/test_rtt.c | 2 +- test/unittests/test_send_headers.c | 2 +- test/unittests/test_senhist.c | 2 +- test/unittests/test_set.c | 2 +- test/unittests/test_sfcw.c | 2 +- test/unittests/test_shi.c | 2 +- test/unittests/test_some_packets.c | 2 +- test/unittests/test_spi.c | 2 +- test/unittests/test_stop_waiting_gquic_be.c | 2 +- test/unittests/test_stream.c | 2 +- test/unittests/test_streamgen.c | 2 +- test/unittests/test_streamparse.c | 2 +- test/unittests/test_trapa.c | 2 +- test/unittests/test_varint.c | 2 +- test/unittests/test_ver_nego.c | 2 +- test/unittests/test_wuf_gquic_be.c | 2 +- 253 files changed, 457 insertions(+), 363 deletions(-) diff --git a/APIs.txt b/APIs.txt index d3a5e2b..9ba4652 100644 --- a/APIs.txt +++ b/APIs.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. LSQUIC APIs =========== diff --git a/CHANGELOG b/CHANGELOG index 0a99d78..40c3480 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,12 @@ +2020-01-09 + - 2.8.7 + - [BUGFIX] Initial packet size check for IETF mini conn applies to + UDP payload, not QUIC packet. + - Support old and new school loss_bits transport parameter. + - Use Q run length of 64 as suggested in the loss bits Draft. + - Undo square wave count when packet is delayed. + - Code cleanup; minor fixes. + 2020-01-06 - 2.8.5 - [HTTP3] Verify number of bytes in incoming DATA frames against diff --git a/CMakeLists.txt b/CMakeLists.txt index 15a8b93..59c171e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. cmake_minimum_required(VERSION 2.8) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 61c1a1c..1332432 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. In addition to the LiteSpeed QUIC Team, the following people contributed to the LiteSpeed Client Library: diff --git a/EXAMPLES.txt b/EXAMPLES.txt index 9f5e20f..5a6dd21 100644 --- a/EXAMPLES.txt +++ b/EXAMPLES.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. LSQUIC Examples =============== diff --git a/LICENSE b/LICENSE index 93bdf56..921653c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc +Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/include/lsquic.h b/include/lsquic.h index 069a959..2154985 100644 --- a/include/lsquic.h +++ b/include/lsquic.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef __LSQUIC_H__ #define __LSQUIC_H__ @@ -25,7 +25,7 @@ extern "C" { #define LSQUIC_MAJOR_VERSION 2 #define LSQUIC_MINOR_VERSION 8 -#define LSQUIC_PATCH_VERSION 5 +#define LSQUIC_PATCH_VERSION 7 /** * Engine flags: @@ -377,7 +377,7 @@ typedef struct ssl_ctx_st * (*lsquic_lookup_cert_f)( #define LSQUIC_DF_ALLOW_MIGRATION 1 /** Use QL loss bits by default */ -#define LSQUIC_DF_QL_BITS 1 +#define LSQUIC_DF_QL_BITS 2 /* 1: Cubic; 2: BBR */ #define LSQUIC_DF_CC_ALGO 1 @@ -675,7 +675,7 @@ struct lsquic_engine_settings { /** * Source Connection ID length. Only applicable to the IETF QUIC - * versions. Valid values are 4 through 18, inclusive. + * versions. Valid values are 0 through 20, inclusive. * * Default value is @ref LSQUIC_DF_SCID_LEN. */ @@ -748,7 +748,11 @@ struct lsquic_engine_settings { unsigned es_cc_algo; /** - * Use QL loss bits. + * Use QL loss bits. Allowed values are: + * 0: Do not use loss bits + * 1: Allow loss bits + * 2: Allow and send loss bits + * -1: Allow and send loss bits, sending old-style boolean loss_bits TP * * Default value is @ref LSQUIC_DF_QL_BITS */ diff --git a/include/lsquic_types.h b/include/lsquic_types.h index abb3340..2322035 100644 --- a/include/lsquic_types.h +++ b/include/lsquic_types.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef __LSQUIC_TYPES_H__ #define __LSQUIC_TYPES_H__ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c3c044b..2f7174b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. cmake_minimum_required(VERSION 2.8) add_subdirectory(liblsquic) diff --git a/src/liblsquic/CMakeLists.txt b/src/liblsquic/CMakeLists.txt index e03a906..2a7d58a 100644 --- a/src/liblsquic/CMakeLists.txt +++ b/src/liblsquic/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. SET(lsquic_STAT_SRCS ls-qpack/lsqpack.c lsquic_alarmset.c diff --git a/src/liblsquic/common_cert_set_2.c b/src/liblsquic/common_cert_set_2.c index 7866366..36b2d60 100644 --- a/src/liblsquic/common_cert_set_2.c +++ b/src/liblsquic/common_cert_set_2.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/common_cert_set_2a.inc b/src/liblsquic/common_cert_set_2a.inc index 78b9d80..d951bf3 100644 --- a/src/liblsquic/common_cert_set_2a.inc +++ b/src/liblsquic/common_cert_set_2a.inc @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/common_cert_set_2b.inc b/src/liblsquic/common_cert_set_2b.inc index 0ec2f74..8111220 100644 --- a/src/liblsquic/common_cert_set_2b.inc +++ b/src/liblsquic/common_cert_set_2b.inc @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/common_cert_set_3.c b/src/liblsquic/common_cert_set_3.c index c568ef2..6c0d72d 100644 --- a/src/liblsquic/common_cert_set_3.c +++ b/src/liblsquic/common_cert_set_3.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/common_cert_set_3a.inc b/src/liblsquic/common_cert_set_3a.inc index 603bf66..9f02f29 100644 --- a/src/liblsquic/common_cert_set_3a.inc +++ b/src/liblsquic/common_cert_set_3a.inc @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/common_cert_set_3b.inc b/src/liblsquic/common_cert_set_3b.inc index f0853b8..1ed258f 100644 --- a/src/liblsquic/common_cert_set_3b.inc +++ b/src/liblsquic/common_cert_set_3b.inc @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/fiu-local.h b/src/liblsquic/fiu-local.h index 50efc16..c69847c 100644 --- a/src/liblsquic/fiu-local.h +++ b/src/liblsquic/fiu-local.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* libfiu - Fault Injection in Userspace * diff --git a/src/liblsquic/lsquic_alarmset.c b/src/liblsquic/lsquic_alarmset.c index 5289b12..c63ded3 100644 --- a/src/liblsquic/lsquic_alarmset.c +++ b/src/liblsquic/lsquic_alarmset.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_alarmset.c -- A set of alarms */ diff --git a/src/liblsquic/lsquic_alarmset.h b/src/liblsquic/lsquic_alarmset.h index 06aa120..c4b1e40 100644 --- a/src/liblsquic/lsquic_alarmset.h +++ b/src/liblsquic/lsquic_alarmset.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_alarmset.h -- A set of alarms */ diff --git a/src/liblsquic/lsquic_arr.c b/src/liblsquic/lsquic_arr.c index 43a0325..221fa43 100644 --- a/src/liblsquic/lsquic_arr.c +++ b/src/liblsquic/lsquic_arr.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_arr.c */ diff --git a/src/liblsquic/lsquic_arr.h b/src/liblsquic/lsquic_arr.h index 7bf75b9..8830f13 100644 --- a/src/liblsquic/lsquic_arr.h +++ b/src/liblsquic/lsquic_arr.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_arr.h -- Array */ diff --git a/src/liblsquic/lsquic_attq.c b/src/liblsquic/lsquic_attq.c index ead4aec..9ea8c24 100644 --- a/src/liblsquic/lsquic_attq.c +++ b/src/liblsquic/lsquic_attq.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_attq.c -- Advisory Tick Time Queue * diff --git a/src/liblsquic/lsquic_attq.h b/src/liblsquic/lsquic_attq.h index 4d3880e..58f7fa0 100644 --- a/src/liblsquic/lsquic_attq.h +++ b/src/liblsquic/lsquic_attq.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_attq.h -- Advisory Tick Time Queue */ diff --git a/src/liblsquic/lsquic_bbr.c b/src/liblsquic/lsquic_bbr.c index 456dd43..630bb24 100644 --- a/src/liblsquic/lsquic_bbr.c +++ b/src/liblsquic/lsquic_bbr.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 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. diff --git a/src/liblsquic/lsquic_bbr.h b/src/liblsquic/lsquic_bbr.h index 7e5e15c..367076d 100644 --- a/src/liblsquic/lsquic_bbr.h +++ b/src/liblsquic/lsquic_bbr.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_BBR_H #define LSQUIC_BBR_H diff --git a/src/liblsquic/lsquic_bw_sampler.c b/src/liblsquic/lsquic_bw_sampler.c index b451bd6..7e740b9 100644 --- a/src/liblsquic/lsquic_bw_sampler.c +++ b/src/liblsquic/lsquic_bw_sampler.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_bw_sampler.h b/src/liblsquic/lsquic_bw_sampler.h index 852e2a3..cb117d8 100644 --- a/src/liblsquic/lsquic_bw_sampler.h +++ b/src/liblsquic/lsquic_bw_sampler.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_BW_SAMPLER_H #define LSQUIC_BW_SAMPLER_H 1 diff --git a/src/liblsquic/lsquic_byteswap.h b/src/liblsquic/lsquic_byteswap.h index 1b45373..126bc00 100644 --- a/src/liblsquic/lsquic_byteswap.h +++ b/src/liblsquic/lsquic_byteswap.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_BYTESWAP_H #define LSQUIC_BYTESWAP_H 1 diff --git a/src/liblsquic/lsquic_cfcw.c b/src/liblsquic/lsquic_cfcw.c index 128d0c0..b38cebf 100644 --- a/src/liblsquic/lsquic_cfcw.c +++ b/src/liblsquic/lsquic_cfcw.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_chsk_stream.c b/src/liblsquic/lsquic_chsk_stream.c index ccdb13a..f60db09 100644 --- a/src/liblsquic/lsquic_chsk_stream.c +++ b/src/liblsquic/lsquic_chsk_stream.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Stream/crypto handshake adapter for the client side. * diff --git a/src/liblsquic/lsquic_chsk_stream.h b/src/liblsquic/lsquic_chsk_stream.h index 95f4964..9169d59 100644 --- a/src/liblsquic/lsquic_chsk_stream.h +++ b/src/liblsquic/lsquic_chsk_stream.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Stream/crypto handshake adapter for the client side. */ diff --git a/src/liblsquic/lsquic_cong_ctl.h b/src/liblsquic/lsquic_cong_ctl.h index 014295c..1c20133 100644 --- a/src/liblsquic/lsquic_cong_ctl.h +++ b/src/liblsquic/lsquic_cong_ctl.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_cong_ctl.h -- congestion control interface */ diff --git a/src/liblsquic/lsquic_conn.c b/src/liblsquic/lsquic_conn.c index 0a9f6c2..473e575 100644 --- a/src/liblsquic/lsquic_conn.c +++ b/src/liblsquic/lsquic_conn.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_conn.h b/src/liblsquic/lsquic_conn.h index b86efc9..d35c0d2 100644 --- a/src/liblsquic/lsquic_conn.h +++ b/src/liblsquic/lsquic_conn.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_conn.h -- Connection interface * diff --git a/src/liblsquic/lsquic_conn_flow.h b/src/liblsquic/lsquic_conn_flow.h index d06ed5a..4401df3 100644 --- a/src/liblsquic/lsquic_conn_flow.h +++ b/src/liblsquic/lsquic_conn_flow.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_conn_flow.h -- Connection flow control-related functions */ diff --git a/src/liblsquic/lsquic_conn_public.h b/src/liblsquic/lsquic_conn_public.h index 46993b7..47dfeb0 100644 --- a/src/liblsquic/lsquic_conn_public.h +++ b/src/liblsquic/lsquic_conn_public.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_conn_public.h -- Connection's "public interface" * diff --git a/src/liblsquic/lsquic_crt_compress.c b/src/liblsquic/lsquic_crt_compress.c index 93fbd00..e597613 100644 --- a/src/liblsquic/lsquic_crt_compress.c +++ b/src/liblsquic/lsquic_crt_compress.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_crt_compress.h b/src/liblsquic/lsquic_crt_compress.h index 13acd7c..de8e2c3 100644 --- a/src/liblsquic/lsquic_crt_compress.h +++ b/src/liblsquic/lsquic_crt_compress.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef __LSQUIC_CRT_COMPRESS_H__ #define __LSQUIC_CRT_COMPRESS_H__ diff --git a/src/liblsquic/lsquic_crypto.c b/src/liblsquic/lsquic_crypto.c index 494c9fa..68c0012 100644 --- a/src/liblsquic/lsquic_crypto.c +++ b/src/liblsquic/lsquic_crypto.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include diff --git a/src/liblsquic/lsquic_crypto.h b/src/liblsquic/lsquic_crypto.h index 03f009c..e854783 100644 --- a/src/liblsquic/lsquic_crypto.h +++ b/src/liblsquic/lsquic_crypto.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef __LSQUIC_CRYPTO_H__ #define __LSQUIC_CRYPTO_H__ diff --git a/src/liblsquic/lsquic_cubic.c b/src/liblsquic/lsquic_cubic.c index a00201a..ee05a63 100644 --- a/src/liblsquic/lsquic_cubic.c +++ b/src/liblsquic/lsquic_cubic.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_cubic.c -- LSQUIC CUBIC implementation. */ diff --git a/src/liblsquic/lsquic_cubic.h b/src/liblsquic/lsquic_cubic.h index 18db13b..c4c6173 100644 --- a/src/liblsquic/lsquic_cubic.h +++ b/src/liblsquic/lsquic_cubic.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_cubic.h -- CUBIC congestion control protocol. */ diff --git a/src/liblsquic/lsquic_data_in_if.h b/src/liblsquic/lsquic_data_in_if.h index dbbe0b9..de201bb 100644 --- a/src/liblsquic/lsquic_data_in_if.h +++ b/src/liblsquic/lsquic_data_in_if.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_data_in_if.h -- DATA in interface */ diff --git a/src/liblsquic/lsquic_di_error.c b/src/liblsquic/lsquic_di_error.c index c94e1fa..0571364 100644 --- a/src/liblsquic/lsquic_di_error.c +++ b/src/liblsquic/lsquic_di_error.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_di_error.c -- A placeholder when things go wrong * diff --git a/src/liblsquic/lsquic_di_hash.c b/src/liblsquic/lsquic_di_hash.c index 31dd18c..9f116c7 100644 --- a/src/liblsquic/lsquic_di_hash.c +++ b/src/liblsquic/lsquic_di_hash.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_di_hash.c -- Copy incoming data into a hash * diff --git a/src/liblsquic/lsquic_di_nocopy.c b/src/liblsquic/lsquic_di_nocopy.c index 942ca16..caae1ce 100644 --- a/src/liblsquic/lsquic_di_nocopy.c +++ b/src/liblsquic/lsquic_di_nocopy.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_di_nocopy.c -- The "no-copy" data in stream. * diff --git a/src/liblsquic/lsquic_enc_sess.h b/src/liblsquic/lsquic_enc_sess.h index a824751..e3bed9b 100644 --- a/src/liblsquic/lsquic_enc_sess.h +++ b/src/liblsquic/lsquic_enc_sess.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_ENC_SESS_H #define LSQUIC_ENC_SESS_H 1 diff --git a/src/liblsquic/lsquic_enc_sess_common.c b/src/liblsquic/lsquic_enc_sess_common.c index 92dc3ab..e90dad0 100644 --- a/src/liblsquic/lsquic_enc_sess_common.c +++ b/src/liblsquic/lsquic_enc_sess_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_enc_sess_ietf.c b/src/liblsquic/lsquic_enc_sess_ietf.c index ea96e18..2c0e10a 100644 --- a/src/liblsquic/lsquic_enc_sess_ietf.c +++ b/src/liblsquic/lsquic_enc_sess_ietf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_enc_sess_ietf.c -- Crypto session for IETF QUIC */ @@ -235,7 +235,8 @@ struct enc_sess_iquic ESI_CACHED_INFO = 1 << 9, ESI_1RTT_ACKED = 1 << 10, ESI_WANT_TICKET = 1 << 11, - ESI_QL_BITS = 1 << 12, + ESI_RECV_QL_BITS = 1 << 12, + ESI_SEND_QL_BITS = 1 << 13, } esi_flags; enum evp_aead_direction_t esi_dir[2]; /* client, server */ @@ -326,7 +327,7 @@ apply_hp (struct enc_sess_iquic *enc_sess, hp->hp_gen_mask(enc_sess, hp, cliser, dst + packno_off + 4, mask); LSQ_DEBUG("apply header protection using mask %s", HEXSTR(mask, 5, mask_str)); - if (enc_sess->esi_flags & ESI_QL_BITS) + if (enc_sess->esi_flags & ESI_SEND_QL_BITS) dst[0] ^= (0x7 | ((dst[0] >> 7) << 3)) & mask[0]; else dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; @@ -387,7 +388,7 @@ strip_hp (struct enc_sess_iquic *enc_sess, hp->hp_gen_mask(enc_sess, hp, cliser, iv, mask); LSQ_DEBUG("strip header protection using mask %s", HEXSTR(mask, 5, mask_str)); - if (enc_sess->esi_flags & ESI_QL_BITS) + if (enc_sess->esi_flags & ESI_RECV_QL_BITS) dst[0] ^= (0x7 | ((dst[0] >> 7) << 3)) & mask[0]; else dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; @@ -538,8 +539,13 @@ gen_trans_params (struct enc_sess_iquic *enc_sess, unsigned char *buf, - !!(params.tp_flags & (TRAPA_PREFADDR_IPv4|TRAPA_PREFADDR_IPv6)); if (!settings->es_allow_migration) params.tp_disable_active_migration = 1; - if (settings->es_ql_bits) + if (settings->es_ql_bits == -1) + params.tp_flags |= TRAPA_QL_BITS_OLD; + else if (settings->es_ql_bits) + { + params.tp_loss_bits = settings->es_ql_bits - 1; params.tp_flags |= TRAPA_QL_BITS; + } len = lsquic_tp_encode(¶ms, buf, bufsz); if (len >= 0) @@ -1469,11 +1475,36 @@ get_peer_transport_params (struct enc_sess_iquic *enc_sess) } if ((trans_params->tp_flags & TRAPA_QL_BITS) - && enc_sess->esi_enpub->enp_settings.es_ql_bits) + && enc_sess->esi_enpub->enp_settings.es_ql_bits) { - LSQ_DEBUG("enable QL loss bits"); - enc_sess->esi_flags |= ESI_QL_BITS; + unsigned our_loss_bits; + if (enc_sess->esi_enpub->enp_settings.es_ql_bits == -1) + our_loss_bits = 1; + else + our_loss_bits = enc_sess->esi_enpub->enp_settings.es_ql_bits - 1; + + switch ((our_loss_bits << 1) | trans_params->tp_loss_bits) + { + case (0 << 1) | 0: + LSQ_DEBUG("both sides only tolerate QL bits: don't enable them"); + break; + case (0 << 1) | 1: + LSQ_DEBUG("peer sends QL bits, we receive them"); + enc_sess->esi_flags |= ESI_RECV_QL_BITS; + break; + case (1 << 1) | 0: + LSQ_DEBUG("we send QL bits, peer receives them"); + enc_sess->esi_flags |= ESI_SEND_QL_BITS; + break; + default/*1 << 1) | 1*/: + LSQ_DEBUG("enable sending and receiving QL bits"); + enc_sess->esi_flags |= ESI_RECV_QL_BITS; + enc_sess->esi_flags |= ESI_SEND_QL_BITS; + break; + } } + else + LSQ_DEBUG("no QL bits"); return 0; } @@ -1633,14 +1664,6 @@ static const enum enc_level hety2el[] = }; -static const enum header_type pns2hety[] = -{ - [PNS_INIT] = HETY_INITIAL, - [PNS_HSK] = HETY_HANDSHAKE, - [PNS_APP] = HETY_NOT_SET, -}; - - static const enum enc_level pns2enc_level[] = { [PNS_INIT] = ENC_LEV_CLEAR, @@ -1671,19 +1694,9 @@ iquic_esf_encrypt_packet (enc_session_t *enc_session_p, enum packnum_space pns; char errbuf[ERR_ERROR_STRING_BUF_LEN]; - if (packet_out->po_flags & PO_MINI) - { - /* XXX TODO Don't rely on PO_MINI, generalize this logic */ - assert(enc_sess->esi_flags & ESI_SERVER); - enc_level = hety2el[ packet_out->po_header_type ]; - } - else - { - pns = lsquic_packet_out_pns(packet_out); - /* TODO Obviously, will need more logic for 0-RTT */ - enc_level = pns2enc_level[ pns ]; - packet_out->po_header_type = pns2hety[ pns ]; - } + pns = lsquic_packet_out_pns(packet_out); + /* TODO Obviously, will need more logic for 0-RTT */ + enc_level = pns2enc_level[ pns ]; cliser = !!(enc_sess->esi_flags & ESI_SERVER); if (enc_level == ENC_LEV_FORW) @@ -1985,7 +1998,7 @@ iquic_esf_decrypt_packet (enc_session_t *enc_session_p, goto err; } - if (enc_sess->esi_flags & ESI_QL_BITS) + if (enc_sess->esi_flags & ESI_SEND_QL_BITS) { packet_in->pi_flags |= PI_LOG_QL_BITS; if (dst[0] & 0x10) @@ -2021,7 +2034,9 @@ iquic_esf_decrypt_packet (enc_session_t *enc_session_p, { LSQ_ERROR("could not init seal crypto ctx (key phase)"); cleanup_crypto_ctx(&pair->ykp_ctx[ !cliser ]); - /* XXX Is this the proper thing to do? Packet decrypted fine... */ + /* This is a severe error, abort connection */ + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "crypto ctx failure during key phase shift"); dec_packin = DECPI_BADCRYPT; goto err; } @@ -2180,15 +2195,22 @@ iquic_esf_zero_rtt_enabled (enc_session_t *enc_session_p) } -int +static int iquic_esfi_reset_dcid (enc_session_t *enc_session_p, const lsquic_cid_t *old_dcid, const lsquic_cid_t *new_dcid) { struct enc_sess_iquic *const enc_sess = enc_session_p; + struct crypto_ctx_pair *pair; enc_sess->esi_odcid = *old_dcid; enc_sess->esi_flags |= ESI_ODCID; - /* TODO: free previous handshake keys */ + + /* Free previous handshake keys */ + assert(enc_sess->esi_hsk_pairs); + pair = &enc_sess->esi_hsk_pairs[ENC_LEV_CLEAR]; + cleanup_crypto_ctx(&pair->ykp_ctx[0]); + cleanup_crypto_ctx(&pair->ykp_ctx[1]); + if (0 == setup_handshake_keys(enc_sess, new_dcid)) { LSQ_INFOC("reset DCID to %"CID_FMT, CID_BITS(new_dcid)); diff --git a/src/liblsquic/lsquic_eng_hist.c b/src/liblsquic/lsquic_eng_hist.c index 80e8789..4eccfcb 100644 --- a/src/liblsquic/lsquic_eng_hist.c +++ b/src/liblsquic/lsquic_eng_hist.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #ifdef WIN32 #include diff --git a/src/liblsquic/lsquic_eng_hist.h b/src/liblsquic/lsquic_eng_hist.h index 9b26a2a..3a64efe 100644 --- a/src/liblsquic/lsquic_eng_hist.h +++ b/src/liblsquic/lsquic_eng_hist.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_eng_hist.h - Engine history. * diff --git a/src/liblsquic/lsquic_engine.c b/src/liblsquic/lsquic_engine.c index 94f0480..fe6af37 100644 --- a/src/liblsquic/lsquic_engine.c +++ b/src/liblsquic/lsquic_engine.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_engine.c - QUIC engine */ @@ -383,13 +383,12 @@ lsquic_engine_check_settings (const struct lsquic_engine_settings *settings, "The maximum value of idle timeout is 600 seconds"); return -1; } - if (!(!(flags & ENG_SERVER) && settings->es_scid_len == 0) - && (settings->es_scid_len < 4 || settings->es_scid_len > 18)) + if (settings->es_scid_len > MAX_CID_LEN) { if (err_buf) snprintf(err_buf, err_buf_sz, "Source connection ID cannot be %u " - "bytes long; it must be between 4 and 18.", - settings->es_scid_len); + "bytes long; it must be between 0 and %u.", + settings->es_scid_len, MAX_CID_LEN); return -1; } @@ -400,6 +399,15 @@ lsquic_engine_check_settings (const struct lsquic_engine_settings *settings, "algorithm value %u", settings->es_cc_algo); return -1; } + + if (!(settings->es_ql_bits >= -1 && settings->es_ql_bits <= 2)) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "Invalid QL bits value %d ", + settings->es_ql_bits); + return -1; + } + return 0; } @@ -1021,7 +1029,7 @@ find_conn (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, static lsquic_conn_t * find_or_create_conn (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, struct packin_parse_state *ppstate, const struct sockaddr *sa_local, - const struct sockaddr *sa_peer, void *peer_ctx) + const struct sockaddr *sa_peer, void *peer_ctx, size_t packet_in_size) { struct lsquic_hash_elem *el; struct purga_el *puel; @@ -1133,7 +1141,7 @@ find_or_create_conn (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, if ((1 << version) & LSQUIC_IETF_VERSIONS) { conn = lsquic_mini_conn_ietf_new(&engine->pub, packet_in, version, - sa_peer->sa_family == AF_INET, NULL); + sa_peer->sa_family == AF_INET, NULL, packet_in_size); } else { @@ -1244,11 +1252,10 @@ find_conn_by_srst (struct lsquic_engine *engine, static int process_packet_in (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, struct packin_parse_state *ppstate, const struct sockaddr *sa_local, - const struct sockaddr *sa_peer, void *peer_ctx, int full_udp_packet) + const struct sockaddr *sa_peer, void *peer_ctx, size_t packet_in_size) { lsquic_conn_t *conn; const unsigned char *packet_in_data; - size_t packet_in_size; if (lsquic_packet_in_is_gquic_prst(packet_in) && !engine->pub.enp_settings.es_honor_prst) @@ -1260,14 +1267,14 @@ process_packet_in (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, if (engine->flags & ENG_SERVER) conn = find_or_create_conn(engine, packet_in, ppstate, sa_local, - sa_peer, peer_ctx); + sa_peer, peer_ctx, packet_in_size); else conn = find_conn(engine, packet_in, ppstate, sa_local); if (!conn) { if (engine->pub.enp_settings.es_honor_prst - && full_udp_packet + && packet_in_size == packet_in->pi_data_sz /* Full UDP packet */ && !(packet_in->pi_flags & PI_GQUIC) && engine->pub.enp_srst_hash && (conn = find_conn_by_srst(engine, packet_in))) @@ -2653,7 +2660,7 @@ lsquic_engine_packet_in (lsquic_engine_t *engine, packet_in->pi_flags |= (3 & ecn) << PIBIT_ECN_SHIFT; eng_hist_inc(&engine->history, packet_in->pi_received, sl_packets_in); s = process_packet_in(engine, packet_in, &ppstate, sa_local, sa_peer, - peer_ctx, packet_in->pi_data_sz == packet_in_size); + peer_ctx, packet_in_size); n_zeroes += s == 0; } while (0 == s && packet_in_data < packet_end); diff --git a/src/liblsquic/lsquic_engine_public.h b/src/liblsquic/lsquic_engine_public.h index 8a29d28..7362bc0 100644 --- a/src/liblsquic/lsquic_engine_public.h +++ b/src/liblsquic/lsquic_engine_public.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_engine_public.h -- Engine's "public interface" * diff --git a/src/liblsquic/lsquic_ev_log.c b/src/liblsquic/lsquic_ev_log.c index b5f0c21..a0feabb 100644 --- a/src/liblsquic/lsquic_ev_log.c +++ b/src/liblsquic/lsquic_ev_log.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef WIN32 #include #else diff --git a/src/liblsquic/lsquic_ev_log.h b/src/liblsquic/lsquic_ev_log.h index 3135904..1f6e19c 100644 --- a/src/liblsquic/lsquic_ev_log.h +++ b/src/liblsquic/lsquic_ev_log.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_ev_log.h -- Event logger */ diff --git a/src/liblsquic/lsquic_frab_list.c b/src/liblsquic/lsquic_frab_list.c index 5f9db23..08cb34f 100644 --- a/src/liblsquic/lsquic_frab_list.c +++ b/src/liblsquic/lsquic_frab_list.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frab_list.c -- List of buffer for simple reading and writing */ diff --git a/src/liblsquic/lsquic_frab_list.h b/src/liblsquic/lsquic_frab_list.h index bcb9f1e..ff4bcaf 100644 --- a/src/liblsquic/lsquic_frab_list.h +++ b/src/liblsquic/lsquic_frab_list.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frab_list.h -- List of buffer for simple reading and writing * diff --git a/src/liblsquic/lsquic_frame_common.c b/src/liblsquic/lsquic_frame_common.c index 9374ce3..97607ba 100644 --- a/src/liblsquic/lsquic_frame_common.c +++ b/src/liblsquic/lsquic_frame_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include "lsquic_frame_common.h" diff --git a/src/liblsquic/lsquic_frame_common.h b/src/liblsquic/lsquic_frame_common.h index 6b70e33..9b2d6df 100644 --- a/src/liblsquic/lsquic_frame_common.h +++ b/src/liblsquic/lsquic_frame_common.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frame_common.h */ diff --git a/src/liblsquic/lsquic_frame_reader.c b/src/liblsquic/lsquic_frame_reader.c index cbec19e..3550247 100644 --- a/src/liblsquic/lsquic_frame_reader.c +++ b/src/liblsquic/lsquic_frame_reader.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frame_reader.c -- Read HTTP frames from stream */ @@ -513,6 +513,7 @@ static int decode_and_pass_payload (struct lsquic_frame_reader *fr) { struct headers_state *hs = &fr->fr_state.by_type.headers_state; + const uint32_t hpack_static_table_size = 61; const unsigned char *comp, *end; enum frame_reader_error err; int s; @@ -547,7 +548,7 @@ decode_and_pass_payload (struct lsquic_frame_reader *fr) buf, buf + 16 * 1024, &name_len, &val_len, &name_idx); if (s == 0) { - if (name_idx > 61 /* XXX 61 */) + if (name_idx > hpack_static_table_size) name_idx = 0; /* Work around bug in ls-hpack */ err = (enum frame_reader_error) fr->fr_hsi_if->hsi_process_header(hset, name_idx, buf, diff --git a/src/liblsquic/lsquic_frame_reader.h b/src/liblsquic/lsquic_frame_reader.h index f75a5ad..cf9a0c7 100644 --- a/src/liblsquic/lsquic_frame_reader.h +++ b/src/liblsquic/lsquic_frame_reader.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frame_reader.h -- Read HTTP frames from stream */ diff --git a/src/liblsquic/lsquic_frame_writer.c b/src/liblsquic/lsquic_frame_writer.c index adf11d6..b7889da 100644 --- a/src/liblsquic/lsquic_frame_writer.c +++ b/src/liblsquic/lsquic_frame_writer.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frame_writer.c -- write frames to HEADERS stream. * diff --git a/src/liblsquic/lsquic_frame_writer.h b/src/liblsquic/lsquic_frame_writer.h index 31ec8b7..5088405 100644 --- a/src/liblsquic/lsquic_frame_writer.h +++ b/src/liblsquic/lsquic_frame_writer.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_frame_writer.h -- write frames to HEADERS stream. */ diff --git a/src/liblsquic/lsquic_full_conn.c b/src/liblsquic/lsquic_full_conn.c index f39c90c..270e760 100644 --- a/src/liblsquic/lsquic_full_conn.c +++ b/src/liblsquic/lsquic_full_conn.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_full_conn.c -- A "full" connection object has full functionality */ diff --git a/src/liblsquic/lsquic_full_conn.h b/src/liblsquic/lsquic_full_conn.h index f1db013..649cc05 100644 --- a/src/liblsquic/lsquic_full_conn.h +++ b/src/liblsquic/lsquic_full_conn.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_FULL_CONN_H #define LSQUIC_FULL_CONN_H diff --git a/src/liblsquic/lsquic_full_conn_ietf.c b/src/liblsquic/lsquic_full_conn_ietf.c index cde8f9f..5cd316f 100644 --- a/src/liblsquic/lsquic_full_conn_ietf.c +++ b/src/liblsquic/lsquic_full_conn_ietf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_full_conn_ietf.c -- IETF QUIC connection. */ @@ -2710,7 +2710,8 @@ handshake_ok (struct lsquic_conn *lconn) (lsquic_tp_to_str(params, buf, sizeof(buf)), buf)); if ((params->tp_flags & TRAPA_QL_BITS) - && conn->ifc_settings->es_ql_bits) + && (conn->ifc_settings->es_ql_bits == 2 + || conn->ifc_settings->es_ql_bits == -1)) { LSQ_DEBUG("turn on QL loss bits"); lsquic_send_ctl_do_ql_bits(&conn->ifc_send_ctl); diff --git a/src/liblsquic/lsquic_global.c b/src/liblsquic/lsquic_global.c index c321c52..0cf9cb0 100644 --- a/src/liblsquic/lsquic_global.c +++ b/src/liblsquic/lsquic_global.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Global state */ diff --git a/src/liblsquic/lsquic_handshake.c b/src/liblsquic/lsquic_handshake.c index 25c39c2..00837f4 100644 --- a/src/liblsquic/lsquic_handshake.c +++ b/src/liblsquic/lsquic_handshake.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #define _GNU_SOURCE /* for memmem */ #include @@ -567,22 +567,6 @@ make_compress_cert_hash_item(lsquic_str_t *domain, lsquic_str_t *crts_compress_b } -/* server */ -#if __GNUC__ -__attribute__((unused)) /* XXX why? */ -#endif -static void -free_compress_cert_hash_item(compress_cert_hash_item_t *item) -{ - if (item) - { - lsquic_str_delete(item->crts_compress_buf); - lsquic_str_delete(item->domain); - free(item); - } -} - - /* server */ static int insert_compress_certs(compress_cert_hash_item_t *item) { @@ -2947,22 +2931,6 @@ verify_stk (enc_session_t *enc_session_p, } -#if 0 /* unused */ -enum AEAD_TYPE determineaead() -{ - return AEAD_AESG; -} - - -enum KENX_TYPE determinekexs() -{ - /* only support C255 now */ - return KENX_C255; -} - - -#endif /* 0 */ - static uint64_t combine_path_id_pack_num(uint8_t path_id, uint64_t pack_num) { uint64_t v = ((uint64_t)path_id << 56) | pack_num; diff --git a/src/liblsquic/lsquic_handshake.h b/src/liblsquic/lsquic_handshake.h index 0dce23b..ca5c813 100644 --- a/src/liblsquic/lsquic_handshake.h +++ b/src/liblsquic/lsquic_handshake.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_HANDSHAKE_H #define LSQUIC_HANDSHAKE_H 1 diff --git a/src/liblsquic/lsquic_hash.c b/src/liblsquic/lsquic_hash.c index 7b461be..89996c8 100644 --- a/src/liblsquic/lsquic_hash.c +++ b/src/liblsquic/lsquic_hash.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hash.c */ diff --git a/src/liblsquic/lsquic_hash.h b/src/liblsquic/lsquic_hash.h index 9fc8a79..af7c9ba 100644 --- a/src/liblsquic/lsquic_hash.h +++ b/src/liblsquic/lsquic_hash.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hash.c -- A generic hash */ diff --git a/src/liblsquic/lsquic_hcsi_reader.c b/src/liblsquic/lsquic_hcsi_reader.c index 4999c16..3fc78ec 100644 --- a/src/liblsquic/lsquic_hcsi_reader.c +++ b/src/liblsquic/lsquic_hcsi_reader.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_hcsi_reader.h b/src/liblsquic/lsquic_hcsi_reader.h index 918879a..347fe3e 100644 --- a/src/liblsquic/lsquic_hcsi_reader.h +++ b/src/liblsquic/lsquic_hcsi_reader.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hcsi_reader.h -- HTTP Control Stream Incoming (HCSI) reader */ diff --git a/src/liblsquic/lsquic_hcso_writer.c b/src/liblsquic/lsquic_hcso_writer.c index 8b7bd5a..a6addaa 100644 --- a/src/liblsquic/lsquic_hcso_writer.c +++ b/src/liblsquic/lsquic_hcso_writer.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hcso_writer.c - write to outgoing HTTP Control Stream */ @@ -21,6 +21,7 @@ #include "lsquic_varint.h" #include "lsquic_byteswap.h" #include "lsquic_hcso_writer.h" +#include "lsquic_conn.h" #define LSQUIC_LOGGER_MODULE LSQLM_HCSO_WRITER #define LSQUIC_LOG_CONN_ID \ @@ -67,6 +68,8 @@ static lsquic_stream_ctx_t * hcso_on_new (void *stream_if_ctx, struct lsquic_stream *stream) { struct hcso_writer *writer = stream_if_ctx; + struct lsquic_conn *lconn; + writer->how_stream = stream; lsquic_frab_list_init(&writer->how_fral, 0x100, NULL, NULL, NULL); #ifndef NDEBUG @@ -85,7 +88,8 @@ hcso_on_new (void *stream_if_ctx, struct lsquic_stream *stream) if (0 != hcso_write_type(writer)) { LSQ_INFO("cannot write to frab list"); - /* TODO: abort connection */ + lconn = lsquic_stream_conn(stream); + lconn->cn_if->ci_internal_error(lconn, "cannot write to frab list"); } LSQ_DEBUG("create HTTP Control Stream Writer"); lsquic_stream_wantwrite(stream, 1); @@ -301,6 +305,7 @@ hcso_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) .lsqr_ctx = &writer->how_fral }; ssize_t nw; + struct lsquic_conn *lconn; #ifndef NDEBUG if (stream->tosend_off < 8 && (writer->how_flags & HOW_CHOP_STREAM)) @@ -320,8 +325,9 @@ hcso_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) } else { - /* TODO: abort connection */ - LSQ_WARN("cannot write to stream: %s", strerror(errno)); + lconn = lsquic_stream_conn(stream); + lconn->cn_if->ci_internal_error(lconn, "cannot write to stream: %s", + strerror(errno)); lsquic_stream_wantwrite(stream, 0); } } diff --git a/src/liblsquic/lsquic_hcso_writer.h b/src/liblsquic/lsquic_hcso_writer.h index 30da9dc..975b0c2 100644 --- a/src/liblsquic/lsquic_hcso_writer.h +++ b/src/liblsquic/lsquic_hcso_writer.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hcso_writer.h */ diff --git a/src/liblsquic/lsquic_headers.h b/src/liblsquic/lsquic_headers.h index dd59f97..f668956 100644 --- a/src/liblsquic/lsquic_headers.h +++ b/src/liblsquic/lsquic_headers.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_HEADERS_H #define LSQUIC_HEADERS_H 1 diff --git a/src/liblsquic/lsquic_headers_stream.c b/src/liblsquic/lsquic_headers_stream.c index eaeb8af..42a851d 100644 --- a/src/liblsquic/lsquic_headers_stream.c +++ b/src/liblsquic/lsquic_headers_stream.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * HEADERS stream logic */ @@ -414,7 +414,7 @@ lsquic_headers_stream_mem_used (const struct headers_stream *hs) size = sizeof(*hs); size += lsquic_frame_reader_mem_used(hs->hs_fr); size += lsquic_frame_writer_mem_used(hs->hs_fw); - /* XXX: get rid of this mem_used business as we no longer use it? */ + /* XXX: does not cover HPACK encoder and HPACK decoder */ return size; } diff --git a/src/liblsquic/lsquic_headers_stream.h b/src/liblsquic/lsquic_headers_stream.h index 1a4f47d..3713017 100644 --- a/src/liblsquic/lsquic_headers_stream.h +++ b/src/liblsquic/lsquic_headers_stream.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_headers_stream.h -- HEADERS stream interface */ diff --git a/src/liblsquic/lsquic_hkdf.c b/src/liblsquic/lsquic_hkdf.c index 344787c..f3daee6 100644 --- a/src/liblsquic/lsquic_hkdf.c +++ b/src/liblsquic/lsquic_hkdf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_hkdf.h b/src/liblsquic/lsquic_hkdf.h index e82e5b5..10fb95b 100644 --- a/src/liblsquic/lsquic_hkdf.h +++ b/src/liblsquic/lsquic_hkdf.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_HKDF_H #define LSQUIC_HKDF_H 1 diff --git a/src/liblsquic/lsquic_hq.h b/src/liblsquic/lsquic_hq.h index 00d7717..591728e 100644 --- a/src/liblsquic/lsquic_hq.h +++ b/src/liblsquic/lsquic_hq.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hq.h -- HTTP over QUIC (HQ) types */ diff --git a/src/liblsquic/lsquic_hspack_valid.c b/src/liblsquic/lsquic_hspack_valid.c index 0d07942..a59bfb7 100644 --- a/src/liblsquic/lsquic_hspack_valid.c +++ b/src/liblsquic/lsquic_hspack_valid.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_hspack_valid.c -- Handshake packet validator. * diff --git a/src/liblsquic/lsquic_http1x_if.c b/src/liblsquic/lsquic_http1x_if.c index 5c65e5d..c938aaf 100644 --- a/src/liblsquic/lsquic_http1x_if.c +++ b/src/liblsquic/lsquic_http1x_if.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_http1x_if.h b/src/liblsquic/lsquic_http1x_if.h index 5768c21..3548608 100644 --- a/src/liblsquic/lsquic_http1x_if.h +++ b/src/liblsquic/lsquic_http1x_if.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_HTTP1X_IF_H #define LSQUIC_HTTP1X_IF_H 1 diff --git a/src/liblsquic/lsquic_ietf.h b/src/liblsquic/lsquic_ietf.h index aefa693..246f8fd 100644 --- a/src/liblsquic/lsquic_ietf.h +++ b/src/liblsquic/lsquic_ietf.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_IETF_H #define LSQUIC_IETF_H 1 diff --git a/src/liblsquic/lsquic_int_types.h b/src/liblsquic/lsquic_int_types.h index 2c98c9e..1e4a124 100644 --- a/src/liblsquic/lsquic_int_types.h +++ b/src/liblsquic/lsquic_int_types.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_INT_TYPES_H #define LSQUIC_INT_TYPES_H 1 diff --git a/src/liblsquic/lsquic_logger.c b/src/liblsquic/lsquic_logger.c index 1654ed0..5cc8330 100644 --- a/src/liblsquic/lsquic_logger.c +++ b/src/liblsquic/lsquic_logger.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * LSQUIC Logger implementation. */ diff --git a/src/liblsquic/lsquic_logger.h b/src/liblsquic/lsquic_logger.h index b1e976c..cc0a31a 100644 --- a/src/liblsquic/lsquic_logger.h +++ b/src/liblsquic/lsquic_logger.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_logger.h -- logging functions and macros. * diff --git a/src/liblsquic/lsquic_malo.c b/src/liblsquic/lsquic_malo.c index 2cac218..adbf06f 100644 --- a/src/liblsquic/lsquic_malo.c +++ b/src/liblsquic/lsquic_malo.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_malo.c -- malo allocator implementation. * diff --git a/src/liblsquic/lsquic_malo.h b/src/liblsquic/lsquic_malo.h index 9327037..aebc53f 100644 --- a/src/liblsquic/lsquic_malo.h +++ b/src/liblsquic/lsquic_malo.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_malo.h -- Fast allocator for fixed-sized objects. */ diff --git a/src/liblsquic/lsquic_min_heap.c b/src/liblsquic/lsquic_min_heap.c index e7f680b..4cd204c 100644 --- a/src/liblsquic/lsquic_min_heap.c +++ b/src/liblsquic/lsquic_min_heap.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_min_heap.c */ diff --git a/src/liblsquic/lsquic_min_heap.h b/src/liblsquic/lsquic_min_heap.h index efb2aea..f914103 100644 --- a/src/liblsquic/lsquic_min_heap.h +++ b/src/liblsquic/lsquic_min_heap.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_min_heap.h -- Min-heap for connections */ diff --git a/src/liblsquic/lsquic_mini_conn.c b/src/liblsquic/lsquic_mini_conn.c index 4cde9ac..6941e4e 100644 --- a/src/liblsquic/lsquic_mini_conn.c +++ b/src/liblsquic/lsquic_mini_conn.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mini_conn.c -- Mini connection. * diff --git a/src/liblsquic/lsquic_mini_conn.h b/src/liblsquic/lsquic_mini_conn.h index 21567c0..de82df7 100644 --- a/src/liblsquic/lsquic_mini_conn.h +++ b/src/liblsquic/lsquic_mini_conn.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mini_conn.h -- Mini-connection * diff --git a/src/liblsquic/lsquic_mini_conn_ietf.c b/src/liblsquic/lsquic_mini_conn_ietf.c index 440efd6..324ec8d 100644 --- a/src/liblsquic/lsquic_mini_conn_ietf.c +++ b/src/liblsquic/lsquic_mini_conn_ietf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mini_conn_ietf.c -- Mini connection used by the IETF QUIC */ @@ -391,13 +391,14 @@ static const struct crypto_stream_if crypto_stream_if = static int -is_first_packet_ok (const struct lsquic_packet_in *packet_in) +is_first_packet_ok (const struct lsquic_packet_in *packet_in, + size_t udp_payload_size) { - if (packet_in->pi_data_sz < IQUIC_MIN_INIT_PACKET_SZ) + if (udp_payload_size < IQUIC_MIN_INIT_PACKET_SZ) { /* [draft-ietf-quic-transport-24] Section 14 */ - LSQ_LOG1(LSQ_LOG_DEBUG, "incoming packet too small: %hu bytes", - packet_in->pi_data_sz); + LSQ_LOG1(LSQ_LOG_DEBUG, "incoming UDP payload too small: %zu bytes", + udp_payload_size); return 0; } /* TODO: Move decryption of the first packet into this function? */ @@ -408,14 +409,15 @@ is_first_packet_ok (const struct lsquic_packet_in *packet_in) struct lsquic_conn * lsquic_mini_conn_ietf_new (struct lsquic_engine_public *enpub, const struct lsquic_packet_in *packet_in, - enum lsquic_version version, int is_ipv4, const lsquic_cid_t *odcid) + enum lsquic_version version, int is_ipv4, const lsquic_cid_t *odcid, + size_t udp_payload_size) { struct ietf_mini_conn *conn; enc_session_t *enc_sess; enum enc_level i; const struct enc_session_funcs_iquic *esfi; - if (!is_first_packet_ok(packet_in)) + if (!is_first_packet_ok(packet_in, udp_payload_size)) return NULL; conn = lsquic_malo_get(enpub->enp_mm.malo.mini_conn_ietf); @@ -709,14 +711,6 @@ imico_dispatch_stream_events (struct ietf_mini_conn *conn) } -static unsigned -imico_process_stream_frame (IMICO_PROC_FRAME_ARGS) -{ - LSQ_WARN("%s: TODO", __func__); - return 0; -} - - static int imico_stash_stream_frame (struct ietf_mini_conn *conn, enum enc_level enc_level, struct lsquic_packet_in *packet_in, @@ -1025,7 +1019,6 @@ static unsigned (*const imico_process_frames[N_QUIC_FRAMES]) (IMICO_PROC_FRAME_ARGS) = { [QUIC_FRAME_PADDING] = imico_process_padding_frame, - [QUIC_FRAME_STREAM] = imico_process_stream_frame, [QUIC_FRAME_CRYPTO] = imico_process_crypto_frame, [QUIC_FRAME_ACK] = imico_process_ack_frame, [QUIC_FRAME_PING] = imico_process_ping_frame, @@ -1044,6 +1037,8 @@ static unsigned (*const imico_process_frames[N_QUIC_FRAMES]) [QUIC_FRAME_STOP_SENDING] = imico_process_invalid_frame, [QUIC_FRAME_PATH_CHALLENGE] = imico_process_invalid_frame, [QUIC_FRAME_PATH_RESPONSE] = imico_process_invalid_frame, + /* STREAM frame can only come in the App PNS and we delay those packets: */ + [QUIC_FRAME_STREAM] = imico_process_invalid_frame, }; @@ -1582,12 +1577,13 @@ imico_generate_conn_close (struct ietf_mini_conn *conn) break; } + need = conn->imc_conn.cn_pf->pf_connect_close_frame_size(is_app, + error_code, 0, rlen); LSQ_DEBUG("will generate %u CONNECTION_CLOSE frame%.*s", pns_max - pns + 1, pns_max > pns, "s"); do { header_type = pns2hety[pns]; - need = 30; /* Guess */ /* TODO: calculate, don't guess */ packet_out = imico_get_packet_out(conn, header_type, need); if (!packet_out) return; diff --git a/src/liblsquic/lsquic_mini_conn_ietf.h b/src/liblsquic/lsquic_mini_conn_ietf.h index f76291f..645fe0b 100644 --- a/src/liblsquic/lsquic_mini_conn_ietf.h +++ b/src/liblsquic/lsquic_mini_conn_ietf.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mini_conn_ietf.h -- Mini connection used by the IETF QUIC */ @@ -110,7 +110,8 @@ struct ietf_mini_conn struct lsquic_conn * lsquic_mini_conn_ietf_new (struct lsquic_engine_public *, const struct lsquic_packet_in *, - enum lsquic_version, int is_ipv4, const struct lsquic_cid *); + enum lsquic_version, int is_ipv4, const struct lsquic_cid *, + size_t udp_payload_size); int lsquic_mini_conn_ietf_ecn_ok (const struct ietf_mini_conn *); diff --git a/src/liblsquic/lsquic_minmax.c b/src/liblsquic/lsquic_minmax.c index d5d8049..102d4d8 100644 --- a/src/liblsquic/lsquic_minmax.c +++ b/src/liblsquic/lsquic_minmax.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Based on Google code released under BSD license here: * https://groups.google.com/forum/#!topic/bbr-dev/3RTgkzi5ZD8 diff --git a/src/liblsquic/lsquic_minmax.h b/src/liblsquic/lsquic_minmax.h index ab42c59..ef95c00 100644 --- a/src/liblsquic/lsquic_minmax.h +++ b/src/liblsquic/lsquic_minmax.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_MINMAX_H #define LSQUIC_MINMAX_H diff --git a/src/liblsquic/lsquic_mm.c b/src/liblsquic/lsquic_mm.c index b7d3004..ff8f483 100644 --- a/src/liblsquic/lsquic_mm.c +++ b/src/liblsquic/lsquic_mm.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mm.c -- Memory manager. */ diff --git a/src/liblsquic/lsquic_mm.h b/src/liblsquic/lsquic_mm.h index 51e5c6c..c3abe9e 100644 --- a/src/liblsquic/lsquic_mm.h +++ b/src/liblsquic/lsquic_mm.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_mm.h -- Memory manager. * diff --git a/src/liblsquic/lsquic_pacer.c b/src/liblsquic/lsquic_pacer.c index ada3edd..d7abd92 100644 --- a/src/liblsquic/lsquic_pacer.c +++ b/src/liblsquic/lsquic_pacer.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_pacer.h b/src/liblsquic/lsquic_pacer.h index a96ffe1..199397e 100644 --- a/src/liblsquic/lsquic_pacer.h +++ b/src/liblsquic/lsquic_pacer.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PACER_H #define LSQUIC_PACER_H 1 diff --git a/src/liblsquic/lsquic_packet_common.c b/src/liblsquic/lsquic_packet_common.c index 02a09c7..82a62a7 100644 --- a/src/liblsquic/lsquic_packet_common.c +++ b/src/liblsquic/lsquic_packet_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packet_common.c -- some common packet-related routines */ diff --git a/src/liblsquic/lsquic_packet_common.h b/src/liblsquic/lsquic_packet_common.h index b95585d..6b575d0 100644 --- a/src/liblsquic/lsquic_packet_common.h +++ b/src/liblsquic/lsquic_packet_common.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PACKET_COMMON_H #define LSQUIC_PACKET_COMMON_H 1 diff --git a/src/liblsquic/lsquic_packet_gquic.c b/src/liblsquic/lsquic_packet_gquic.c index 4e2025d..aacec59 100644 --- a/src/liblsquic/lsquic_packet_gquic.c +++ b/src/liblsquic/lsquic_packet_gquic.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include diff --git a/src/liblsquic/lsquic_packet_gquic.h b/src/liblsquic/lsquic_packet_gquic.h index c85e44c..02a75cd 100644 --- a/src/liblsquic/lsquic_packet_gquic.h +++ b/src/liblsquic/lsquic_packet_gquic.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PACKET_GQUIC_H #define LSQUIC_PACKET_GQUIC_H 1 diff --git a/src/liblsquic/lsquic_packet_ietf.h b/src/liblsquic/lsquic_packet_ietf.h index ec7f0cb..e6d4384 100644 --- a/src/liblsquic/lsquic_packet_ietf.h +++ b/src/liblsquic/lsquic_packet_ietf.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PACKET_IETF_H #define LSQUIC_PACKET_IETF_H 1 diff --git a/src/liblsquic/lsquic_packet_in.c b/src/liblsquic/lsquic_packet_in.c index 9165f4b..b9cb539 100644 --- a/src/liblsquic/lsquic_packet_in.c +++ b/src/liblsquic/lsquic_packet_in.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_packet_in.h b/src/liblsquic/lsquic_packet_in.h index b21a922..3303669 100644 --- a/src/liblsquic/lsquic_packet_in.h +++ b/src/liblsquic/lsquic_packet_in.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packet_in.h */ diff --git a/src/liblsquic/lsquic_packet_out.c b/src/liblsquic/lsquic_packet_out.c index 4dac8ea..85f34fd 100644 --- a/src/liblsquic/lsquic_packet_out.c +++ b/src/liblsquic/lsquic_packet_out.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packet_out.c */ diff --git a/src/liblsquic/lsquic_packet_out.h b/src/liblsquic/lsquic_packet_out.h index 3563c8e..759e331 100644 --- a/src/liblsquic/lsquic_packet_out.h +++ b/src/liblsquic/lsquic_packet_out.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packet_out.h -- Structure and routines dealing with packet_out */ diff --git a/src/liblsquic/lsquic_packints.c b/src/liblsquic/lsquic_packints.c index e2c5d43..3912bc7 100644 --- a/src/liblsquic/lsquic_packints.c +++ b/src/liblsquic/lsquic_packints.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packints.c -- Packet intervals implementation. */ diff --git a/src/liblsquic/lsquic_packints.h b/src/liblsquic/lsquic_packints.h index fdf9669..6b021b0 100644 --- a/src/liblsquic/lsquic_packints.h +++ b/src/liblsquic/lsquic_packints.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_packints.h -- Ordered (high to low) list of packet intervals. */ diff --git a/src/liblsquic/lsquic_parse.h b/src/liblsquic/lsquic_parse.h index bd0d722..7268abd 100644 --- a/src/liblsquic/lsquic_parse.h +++ b/src/liblsquic/lsquic_parse.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PARSE_H #define LSQUIC_PARSE_H 1 @@ -152,6 +152,9 @@ struct parse_funcs int (*pf_gen_stop_sending_frame) (unsigned char *buf, size_t buf_len, lsquic_stream_id_t, uint64_t error_code); + size_t + (*pf_connect_close_frame_size) (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len); int (*pf_gen_connect_close_frame) (unsigned char *buf, size_t buf_len, int app_error, unsigned error_code, const char *reason, int reason_len); diff --git a/src/liblsquic/lsquic_parse_Q046.c b/src/liblsquic/lsquic_parse_Q046.c index 730f3d1..49b2703 100644 --- a/src/liblsquic/lsquic_parse_Q046.c +++ b/src/liblsquic/lsquic_parse_Q046.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_Q046.c -- Parsing functions specific to GQUIC Q046 */ @@ -307,6 +307,7 @@ const struct parse_funcs lsquic_parse_funcs_gquic_Q046 = .pf_parse_blocked_frame = gquic_be_parse_blocked_frame, .pf_gen_rst_frame = gquic_be_gen_rst_frame, .pf_parse_rst_frame = gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = gquic_be_connect_close_frame_size, .pf_gen_connect_close_frame = gquic_be_gen_connect_close_frame, .pf_parse_connect_close_frame = gquic_be_parse_connect_close_frame, .pf_gen_goaway_frame = gquic_be_gen_goaway_frame, diff --git a/src/liblsquic/lsquic_parse_Q050.c b/src/liblsquic/lsquic_parse_Q050.c index 674de5e..b67cda8 100644 --- a/src/liblsquic/lsquic_parse_Q050.c +++ b/src/liblsquic/lsquic_parse_Q050.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_Q050.c -- Parsing functions specific to GQUIC Q050 */ @@ -843,6 +843,7 @@ const struct parse_funcs lsquic_parse_funcs_gquic_Q050 = .pf_parse_blocked_frame = gquic_be_parse_blocked_frame, .pf_gen_rst_frame = gquic_be_gen_rst_frame, .pf_parse_rst_frame = gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = gquic_be_connect_close_frame_size, .pf_gen_connect_close_frame = gquic_be_gen_connect_close_frame, .pf_parse_connect_close_frame = gquic_be_parse_connect_close_frame, .pf_gen_goaway_frame = gquic_be_gen_goaway_frame, diff --git a/src/liblsquic/lsquic_parse_common.c b/src/liblsquic/lsquic_parse_common.c index 68326b3..075b610 100644 --- a/src/liblsquic/lsquic_parse_common.c +++ b/src/liblsquic/lsquic_parse_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_parse_common.h b/src/liblsquic/lsquic_parse_common.h index 130cfda..12dd6bf 100644 --- a/src/liblsquic/lsquic_parse_common.h +++ b/src/liblsquic/lsquic_parse_common.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_common.h */ diff --git a/src/liblsquic/lsquic_parse_gquic_be.c b/src/liblsquic/lsquic_parse_gquic_be.c index 2d955e5..6d8053b 100644 --- a/src/liblsquic/lsquic_parse_gquic_be.c +++ b/src/liblsquic/lsquic_parse_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_gquic_be.c -- Parsing functions specific to big-endian * (Q039 and higher) GQUIC. @@ -688,6 +688,14 @@ gquic_be_gen_ping_frame (unsigned char *buf, int buf_len) } +size_t +gquic_be_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len) +{ + return 1 + 4 + 2 + reason_len; +} + + int gquic_be_gen_connect_close_frame (unsigned char *buf, size_t buf_len, int app_error_UNUSED, unsigned ecode, const char *reason, int reason_len) @@ -1021,6 +1029,7 @@ const struct parse_funcs lsquic_parse_funcs_gquic_Q039 = .pf_rst_frame_size = gquic_be_rst_frame_size, .pf_gen_rst_frame = gquic_be_gen_rst_frame, .pf_parse_rst_frame = gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = gquic_be_connect_close_frame_size, .pf_gen_connect_close_frame = gquic_be_gen_connect_close_frame, .pf_parse_connect_close_frame = gquic_be_parse_connect_close_frame, .pf_gen_goaway_frame = gquic_be_gen_goaway_frame, diff --git a/src/liblsquic/lsquic_parse_gquic_be.h b/src/liblsquic/lsquic_parse_gquic_be.h index 56dd25c..306ada3 100644 --- a/src/liblsquic/lsquic_parse_gquic_be.h +++ b/src/liblsquic/lsquic_parse_gquic_be.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PARSE_GQUIC_BE_H #define LSQUIC_PARSE_GQUIC_BE_H @@ -81,6 +81,10 @@ gquic_be_parse_rst_frame (const unsigned char *buf, size_t buf_len, int gquic_be_gen_ping_frame (unsigned char *buf, int buf_len); +size_t +gquic_be_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len); + int gquic_be_gen_connect_close_frame (unsigned char *buf, size_t buf_len, int app_error, unsigned error_code, const char *reason, int reason_len); diff --git a/src/liblsquic/lsquic_parse_gquic_common.c b/src/liblsquic/lsquic_parse_gquic_common.c index c91eb7f..d452ddf 100644 --- a/src/liblsquic/lsquic_parse_gquic_common.c +++ b/src/liblsquic/lsquic_parse_gquic_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_gquic_common.c -- Parsing functions common to GQUIC */ diff --git a/src/liblsquic/lsquic_parse_ietf.h b/src/liblsquic/lsquic_parse_ietf.h index e15df98..728c271 100644 --- a/src/liblsquic/lsquic_parse_ietf.h +++ b/src/liblsquic/lsquic_parse_ietf.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PARSE_IETF_H #define LSQUIC_PARSE_IETF_H 1 diff --git a/src/liblsquic/lsquic_parse_ietf_v1.c b/src/liblsquic/lsquic_parse_ietf_v1.c index d8d92f7..e67d821 100644 --- a/src/liblsquic/lsquic_parse_ietf_v1.c +++ b/src/liblsquic/lsquic_parse_ietf_v1.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_parse_ietf_v1.c -- Parsing functions specific to IETF QUIC v1 */ @@ -840,6 +840,19 @@ ietf_v1_gen_ping_frame (unsigned char *buf, int buf_len) } +static size_t +ietf_v1_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len) +{ + return 1 /* Type */ + + (1 << vint_val2bits(error_code)) /* Error code */ + + (app_error ? 0 : 1 << vint_val2bits(frame_type)) /* Frame type */ + + (1 << vint_val2bits(reason_len)) /* Reason Phrase Length */ + + reason_len + ; +} + + static int ietf_v1_gen_connect_close_frame (unsigned char *buf, size_t buf_len, int app_error, unsigned error_code, const char *reason, int reason_len) @@ -1630,7 +1643,7 @@ lsquic_ietf_v1_parse_packet_in_long_begin (struct lsquic_packet_in *packet_in, switch (header_type) { case HETY_INITIAL: - if (dcil < MIN_INITIAL_DCID_LEN) + if (is_server && dcil < MIN_INITIAL_DCID_LEN) return -1; r = vint_read(p, end, &token_len); if (r < 0) @@ -1941,6 +1954,7 @@ const struct parse_funcs lsquic_parse_funcs_ietf_v1 = .pf_rst_frame_size = ietf_v1_rst_frame_size, .pf_gen_rst_frame = ietf_v1_gen_rst_frame, .pf_parse_rst_frame = ietf_v1_parse_rst_frame, + .pf_connect_close_frame_size = ietf_v1_connect_close_frame_size, .pf_gen_connect_close_frame = ietf_v1_gen_connect_close_frame, .pf_parse_connect_close_frame = ietf_v1_parse_connect_close_frame, .pf_gen_ping_frame = ietf_v1_gen_ping_frame, diff --git a/src/liblsquic/lsquic_parse_iquic_common.c b/src/liblsquic/lsquic_parse_iquic_common.c index 436f5a2..20f8602 100644 --- a/src/liblsquic/lsquic_parse_iquic_common.c +++ b/src/liblsquic/lsquic_parse_iquic_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Parsing routines shared by all IETF QUIC versions. */ diff --git a/src/liblsquic/lsquic_pr_queue.c b/src/liblsquic/lsquic_pr_queue.c index fe9a595..cd87d07 100644 --- a/src/liblsquic/lsquic_pr_queue.c +++ b/src/liblsquic/lsquic_pr_queue.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_pr_queue.c -- packet request queue. */ diff --git a/src/liblsquic/lsquic_pr_queue.h b/src/liblsquic/lsquic_pr_queue.h index 349ae55..3cd4ffe 100644 --- a/src/liblsquic/lsquic_pr_queue.h +++ b/src/liblsquic/lsquic_pr_queue.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_pr_queue.h -- a queue of packet requests * diff --git a/src/liblsquic/lsquic_purga.c b/src/liblsquic/lsquic_purga.c index d47a45d..097eb28 100644 --- a/src/liblsquic/lsquic_purga.c +++ b/src/liblsquic/lsquic_purga.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_purga.h b/src/liblsquic/lsquic_purga.h index 6177d98..896f688 100644 --- a/src/liblsquic/lsquic_purga.h +++ b/src/liblsquic/lsquic_purga.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_purga.h -- Purgatory for CIDs * diff --git a/src/liblsquic/lsquic_push_promise.h b/src/liblsquic/lsquic_push_promise.h index fe94eaf..977225d 100644 --- a/src/liblsquic/lsquic_push_promise.h +++ b/src/liblsquic/lsquic_push_promise.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_PUSH_PROMISE_H #define LSQUIC_PUSH_PROMISE_H 1 diff --git a/src/liblsquic/lsquic_qdec_hdl.c b/src/liblsquic/lsquic_qdec_hdl.c index e1e033c..e263d66 100644 --- a/src/liblsquic/lsquic_qdec_hdl.c +++ b/src/liblsquic/lsquic_qdec_hdl.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_qdec_hdl.c -- QPACK decoder streams handler */ @@ -447,6 +447,7 @@ qdh_supply_hset_to_stream (struct qpack_dec_hdl *qdh, struct lsquic_stream *stream, struct lsqpack_header_list *qlist) { const struct lsquic_hset_if *const hset_if = qdh->qdh_enpub->enp_hsi_if; + const unsigned hpack_static_table_size = 61; struct uncompressed_headers *uh = NULL; const struct lsqpack_header *header; enum lsquic_header_status st; @@ -472,7 +473,8 @@ qdh_supply_hset_to_stream (struct qpack_dec_hdl *qdh, LSQ_DEBUG("%.*s: %.*s", header->qh_name_len, header->qh_name, header->qh_value_len, header->qh_value); st = hset_if->hsi_process_header(hset, - header->qh_flags & QH_ID_SET ? 62 /* XXX: 62 */ + header->qh_static_id : 0, + header->qh_flags & QH_ID_SET ? + hpack_static_table_size + 1 + header->qh_static_id : 0, header->qh_name, header->qh_name_len, header->qh_value, header->qh_value_len); if (st != LSQUIC_HDR_OK) diff --git a/src/liblsquic/lsquic_qdec_hdl.h b/src/liblsquic/lsquic_qdec_hdl.h index 4e98a6d..560c58f 100644 --- a/src/liblsquic/lsquic_qdec_hdl.h +++ b/src/liblsquic/lsquic_qdec_hdl.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_qdec_hdl.h -- QPACK decoder streams handler * diff --git a/src/liblsquic/lsquic_qenc_hdl.c b/src/liblsquic/lsquic_qenc_hdl.c index 73e2d04..7875b7a 100644 --- a/src/liblsquic/lsquic_qenc_hdl.c +++ b/src/liblsquic/lsquic_qenc_hdl.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_qenc_hdl.c -- QPACK encoder streams handler */ diff --git a/src/liblsquic/lsquic_qenc_hdl.h b/src/liblsquic/lsquic_qenc_hdl.h index d448dfc..9c0ca11 100644 --- a/src/liblsquic/lsquic_qenc_hdl.h +++ b/src/liblsquic/lsquic_qenc_hdl.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_qenc_hdl.h -- QPACK encoder streams handler * diff --git a/src/liblsquic/lsquic_qlog.c b/src/liblsquic/lsquic_qlog.c index e99587f..ab8038f 100644 --- a/src/liblsquic/lsquic_qlog.c +++ b/src/liblsquic/lsquic_qlog.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_qlog.h b/src/liblsquic/lsquic_qlog.h index e7ce787..494ed55 100644 --- a/src/liblsquic/lsquic_qlog.h +++ b/src/liblsquic/lsquic_qlog.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_qlog.h -- QLOG Event logger */ diff --git a/src/liblsquic/lsquic_qpack_dec_logger.h b/src/liblsquic/lsquic_qpack_dec_logger.h index 840ca4e..dfe3a00 100644 --- a/src/liblsquic/lsquic_qpack_dec_logger.h +++ b/src/liblsquic/lsquic_qpack_dec_logger.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* This header file is included into lsqpack.c */ #include "lsquic.h" diff --git a/src/liblsquic/lsquic_qpack_enc_logger.h b/src/liblsquic/lsquic_qpack_enc_logger.h index 3e6b292..e467c5b 100644 --- a/src/liblsquic/lsquic_qpack_enc_logger.h +++ b/src/liblsquic/lsquic_qpack_enc_logger.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* This header file is included into lsqpack.c */ #include "lsquic.h" diff --git a/src/liblsquic/lsquic_qtags.h b/src/liblsquic/lsquic_qtags.h index 2ec278d..73adf7f 100644 --- a/src/liblsquic/lsquic_qtags.h +++ b/src/liblsquic/lsquic_qtags.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_QTAGS_H #define LSQUIC_QTAGS_H 1 diff --git a/src/liblsquic/lsquic_rechist.c b/src/liblsquic/lsquic_rechist.c index 43e4df6..6ca8941 100644 --- a/src/liblsquic/lsquic_rechist.c +++ b/src/liblsquic/lsquic_rechist.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_rechist.c -- History of received packets. */ diff --git a/src/liblsquic/lsquic_rechist.h b/src/liblsquic/lsquic_rechist.h index 784ceb0..f2d9834 100644 --- a/src/liblsquic/lsquic_rechist.h +++ b/src/liblsquic/lsquic_rechist.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_rechist.h -- History of received packets. * diff --git a/src/liblsquic/lsquic_rtt.c b/src/liblsquic/lsquic_rtt.c index 2915b49..09cd071 100644 --- a/src/liblsquic/lsquic_rtt.c +++ b/src/liblsquic/lsquic_rtt.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_rtt.c -- RTT calculation */ diff --git a/src/liblsquic/lsquic_rtt.h b/src/liblsquic/lsquic_rtt.h index 5c3ae60..5855304 100644 --- a/src/liblsquic/lsquic_rtt.h +++ b/src/liblsquic/lsquic_rtt.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_rtt.h -- RTT calculation */ diff --git a/src/liblsquic/lsquic_send_ctl.c b/src/liblsquic/lsquic_send_ctl.c index 4fccbd5..0cf5523 100644 --- a/src/liblsquic/lsquic_send_ctl.c +++ b/src/liblsquic/lsquic_send_ctl.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_send_ctl.c -- Logic for sending and sent packets */ @@ -1704,7 +1704,7 @@ lsquic_send_ctl_next_packet_to_send (struct lsquic_send_ctl *ctl, size_t size) { if (ctl->sc_gap + 1 == packet_out->po_packno) ++ctl->sc_square_count; - if (ctl->sc_square_count++ & 128) + if (ctl->sc_square_count++ & 64) packet_out->po_lflags |= POL_SQUARE_BIT; else packet_out->po_lflags &= ~POL_SQUARE_BIT; @@ -1728,6 +1728,9 @@ lsquic_send_ctl_delayed_one (lsquic_send_ctl_t *ctl, #endif if (packet_out->po_lflags & POL_LOSS_BIT) ++ctl->sc_loss_count; + if ((ctl->sc_flags & SC_QL_BITS) + && packet_out->po_header_type == HETY_NOT_SET) + ctl->sc_square_count -= 1 + (ctl->sc_gap + 1 == packet_out->po_packno); } diff --git a/src/liblsquic/lsquic_send_ctl.h b/src/liblsquic/lsquic_send_ctl.h index 0f8d74d..b45fdd0 100644 --- a/src/liblsquic/lsquic_send_ctl.h +++ b/src/liblsquic/lsquic_send_ctl.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_SEND_CTL_H #define LSQUIC_SEND_CTL_H 1 diff --git a/src/liblsquic/lsquic_senhist.c b/src/liblsquic/lsquic_senhist.c index e7c574d..6de0097 100644 --- a/src/liblsquic/lsquic_senhist.c +++ b/src/liblsquic/lsquic_senhist.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_senhist.c -- Sent history implementation */ diff --git a/src/liblsquic/lsquic_senhist.h b/src/liblsquic/lsquic_senhist.h index c1610cf..46a3098 100644 --- a/src/liblsquic/lsquic_senhist.h +++ b/src/liblsquic/lsquic_senhist.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_senhist.h -- History sent packets. * diff --git a/src/liblsquic/lsquic_set.c b/src/liblsquic/lsquic_set.c index a42522f..681f05d 100644 --- a/src/liblsquic/lsquic_set.c +++ b/src/liblsquic/lsquic_set.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_set.c -- A set implementation. * diff --git a/src/liblsquic/lsquic_set.h b/src/liblsquic/lsquic_set.h index f4416a6..d7d7db2 100644 --- a/src/liblsquic/lsquic_set.h +++ b/src/liblsquic/lsquic_set.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_set.h -- A set implementation. * diff --git a/src/liblsquic/lsquic_sfcw.c b/src/liblsquic/lsquic_sfcw.c index 1dabb61..c44ca82 100644 --- a/src/liblsquic/lsquic_sfcw.c +++ b/src/liblsquic/lsquic_sfcw.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_sfcw.h b/src/liblsquic/lsquic_sfcw.h index c8b8b9a..37d55bd 100644 --- a/src/liblsquic/lsquic_sfcw.h +++ b/src/liblsquic/lsquic_sfcw.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_sfcw.h -- Stream flow control window functions */ diff --git a/src/liblsquic/lsquic_shsk_stream.c b/src/liblsquic/lsquic_shsk_stream.c index e75fbdd..7c71af0 100644 --- a/src/liblsquic/lsquic_shsk_stream.c +++ b/src/liblsquic/lsquic_shsk_stream.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Stream/crypto handshake adapter for the server side. Since on the server * side, the handshake logic is handled in mini conn, this adapter does not diff --git a/src/liblsquic/lsquic_shsk_stream.h b/src/liblsquic/lsquic_shsk_stream.h index 7fdfd70..bdd24dc 100644 --- a/src/liblsquic/lsquic_shsk_stream.h +++ b/src/liblsquic/lsquic_shsk_stream.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Stream/crypto handshake adapter for the server side. See implementation * for more comments and explanation. diff --git a/src/liblsquic/lsquic_sizes.h b/src/liblsquic/lsquic_sizes.h index 90342f7..96ce87f 100644 --- a/src/liblsquic/lsquic_sizes.h +++ b/src/liblsquic/lsquic_sizes.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_SIZES_H #define LSQUIC_SIZES_H 1 diff --git a/src/liblsquic/lsquic_spi.c b/src/liblsquic/lsquic_spi.c index df63202..ed69c9c 100644 --- a/src/liblsquic/lsquic_spi.c +++ b/src/liblsquic/lsquic_spi.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_spi.c - implementation of Stream Priority Iterator. */ diff --git a/src/liblsquic/lsquic_spi.h b/src/liblsquic/lsquic_spi.h index 38efbca..a91a4c0 100644 --- a/src/liblsquic/lsquic_spi.h +++ b/src/liblsquic/lsquic_spi.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_spi.h - SPI: Stream Priority Iterator * diff --git a/src/liblsquic/lsquic_stock_shi.c b/src/liblsquic/lsquic_stock_shi.c index 7264d9b..9f5388f 100644 --- a/src/liblsquic/lsquic_stock_shi.c +++ b/src/liblsquic/lsquic_stock_shi.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_stock_shi.c */ diff --git a/src/liblsquic/lsquic_stock_shi.h b/src/liblsquic/lsquic_stock_shi.h index 6bfc163..bee10c2 100644 --- a/src/liblsquic/lsquic_stock_shi.h +++ b/src/liblsquic/lsquic_stock_shi.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_stock_shi.h - Stock shared hash interface implementation. */ diff --git a/src/liblsquic/lsquic_str.c b/src/liblsquic/lsquic_str.c index b33e6eb..88b9e40 100644 --- a/src/liblsquic/lsquic_str.c +++ b/src/liblsquic/lsquic_str.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_str.c * diff --git a/src/liblsquic/lsquic_str.h b/src/liblsquic/lsquic_str.h index 6d8e1ed..8bbb963 100644 --- a/src/liblsquic/lsquic_str.h +++ b/src/liblsquic/lsquic_str.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_str.h -- Some string routines. */ diff --git a/src/liblsquic/lsquic_stream.c b/src/liblsquic/lsquic_stream.c index 655da5e..6ef61b0 100644 --- a/src/liblsquic/lsquic_stream.c +++ b/src/liblsquic/lsquic_stream.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_stream.c -- stream processing * diff --git a/src/liblsquic/lsquic_stream.h b/src/liblsquic/lsquic_stream.h index a2d42bb..f8feb6a 100644 --- a/src/liblsquic/lsquic_stream.h +++ b/src/liblsquic/lsquic_stream.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_STREAM_H #define LSQUIC_STREAM_H diff --git a/src/liblsquic/lsquic_tokgen.c b/src/liblsquic/lsquic_tokgen.c index 1d94750..47e86ba 100644 --- a/src/liblsquic/lsquic_tokgen.c +++ b/src/liblsquic/lsquic_tokgen.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/src/liblsquic/lsquic_tokgen.h b/src/liblsquic/lsquic_tokgen.h index 5bc6df2..85bf490 100644 --- a/src/liblsquic/lsquic_tokgen.h +++ b/src/liblsquic/lsquic_tokgen.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_TOKEN_H #define LSQUIC_TOKEN_H 1 diff --git a/src/liblsquic/lsquic_trans_params.c b/src/liblsquic/lsquic_trans_params.c index 8197a82..b3ba141 100644 --- a/src/liblsquic/lsquic_trans_params.c +++ b/src/liblsquic/lsquic_trans_params.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_trans_params.c */ @@ -137,8 +137,10 @@ lsquic_tp_encode (const struct transport_params *params, if (params->tp_disable_active_migration != TP_DEF_DISABLE_ACTIVE_MIGRATION) need += 4 + 0; - if (params->tp_flags & TRAPA_QL_BITS) + if (params->tp_flags & TRAPA_QL_BITS_OLD) need += 4 + 0; + else if (params->tp_flags & TRAPA_QL_BITS) + need += 4 + 1; if (need > bufsz || need > UINT16_MAX) { @@ -259,11 +261,17 @@ lsquic_tp_encode (const struct transport_params *params, return -1; } - if (params->tp_flags & TRAPA_QL_BITS) + if (params->tp_flags & TRAPA_QL_BITS_OLD) { WRITE_UINT_TO_P(TPI_QL_BITS, 16); WRITE_UINT_TO_P(0, 16); } + else if (params->tp_flags & TRAPA_QL_BITS) + { + WRITE_UINT_TO_P(TPI_QL_BITS, 16); + WRITE_UINT_TO_P(1, 16); + *p++ = !!params->tp_loss_bits; + } #if LSQUIC_TEST_QUANTUM_READINESS if (params->tp_flags & TRAPA_QUANTUM_READY) @@ -292,6 +300,7 @@ lsquic_tp_decode (const unsigned char *const buf, size_t bufsz, uint16_t len, param_id, tlen; unsigned set_of_ids; int s; + uint64_t tmp64; p = buf; end = buf + bufsz; @@ -460,8 +469,36 @@ lsquic_tp_decode (const unsigned char *const buf, size_t bufsz, params->tp_flags |= TRAPA_PREFADDR_IPv6; break; case TPI_QL_BITS: - EXPECT_LEN(0); - params->tp_flags |= TRAPA_QL_BITS; + switch (len) + { + case 0: + /* Old-school boolean */ + params->tp_flags |= TRAPA_QL_BITS; + params->tp_loss_bits = 1; + break; + case 1: + case 2: + case 4: + case 8: + s = vint_read(p, p + len, &tmp64); + if (s != len) + { + LSQ_DEBUG("cannot read the value of numeric transport " + "param loss_bits of length %u", len); + return -1; + } + if (!(tmp64 == 0 || tmp64 == 1)) + { + LSQ_DEBUG("unexpected value of loss_bits TP: %"PRIu64, + tmp64); + return -1; + } + params->tp_loss_bits = tmp64; + params->tp_flags |= TRAPA_QL_BITS; + break; + default: + return -1; + } break; } p += len; @@ -550,7 +587,8 @@ lsquic_tp_to_str (const struct transport_params *params, char *buf, size_t sz) } if (params->tp_flags & TRAPA_QL_BITS) { - nw = snprintf(buf, end - buf, "; QL loss bits"); + nw = snprintf(buf, end - buf, "; QL loss bits: %hhu", + params->tp_loss_bits); buf += nw; if (buf >= end) return; diff --git a/src/liblsquic/lsquic_trans_params.h b/src/liblsquic/lsquic_trans_params.h index 2873a38..bffff49 100644 --- a/src/liblsquic/lsquic_trans_params.h +++ b/src/liblsquic/lsquic_trans_params.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_trans_params.h -- Transport parameters types and functions. */ @@ -58,7 +58,10 @@ enum trapa_flags TRAPA_QUANTUM_READY = 1 << 5, /* Include "Quantum Readiness" TP */ #endif #define TPI_QL_BITS 0x1055 /* 1055 is 133t for "loss" */ - TRAPA_QL_BITS = 1 << 6, + TRAPA_QL_BITS = 1 << 6, /* tp_loss_bits contains valid value */ + TRAPA_QL_BITS_OLD = 1 << 7, /* Send old-school boolean loss_bits TP. + * Not set on decoded transport parameters. + */ }; struct transport_params @@ -93,6 +96,7 @@ struct transport_params #define tp_max_ack_delay tp_numerics_u.s.max_ack_delay #define tp_active_connection_id_limit tp_numerics_u.s.active_connection_id_limit + unsigned char tp_loss_bits; /* Valid values 0, 1. Set if TRAPA_QL_BITS is set. */ signed char tp_disable_active_migration; uint8_t tp_stateless_reset_token[IQUIC_SRESET_TOKEN_SZ]; struct { diff --git a/src/liblsquic/lsquic_util.c b/src/liblsquic/lsquic_util.c index 0dd3d1d..7c099a4 100644 --- a/src/liblsquic/lsquic_util.c +++ b/src/liblsquic/lsquic_util.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Utility functions */ diff --git a/src/liblsquic/lsquic_util.h b/src/liblsquic/lsquic_util.h index 501fb57..c4b21f0 100644 --- a/src/liblsquic/lsquic_util.h +++ b/src/liblsquic/lsquic_util.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_util.h -- Utility functions */ diff --git a/src/liblsquic/lsquic_varint.c b/src/liblsquic/lsquic_varint.c index 9842b31..af9b8f4 100644 --- a/src/liblsquic/lsquic_varint.c +++ b/src/liblsquic/lsquic_varint.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_varint.c -- routines dealing with IETF QUIC varint. */ diff --git a/src/liblsquic/lsquic_varint.h b/src/liblsquic/lsquic_varint.h index 294868e..21a147a 100644 --- a/src/liblsquic/lsquic_varint.h +++ b/src/liblsquic/lsquic_varint.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_VARINT_H #define LSQUIC_VARINT_H 1 diff --git a/src/liblsquic/lsquic_ver_neg.h b/src/liblsquic/lsquic_ver_neg.h index e454695..536356d 100644 --- a/src/liblsquic/lsquic_ver_neg.h +++ b/src/liblsquic/lsquic_ver_neg.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef LSQUIC_VER_NEG_H #define LSQUIC_VER_NEG_H diff --git a/src/liblsquic/lsquic_version.c b/src/liblsquic/lsquic_version.c index 915f3c6..285c202 100644 --- a/src/liblsquic/lsquic_version.c +++ b/src/liblsquic/lsquic_version.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include "lsquic.h" diff --git a/src/liblsquic/lsquic_version.h b/src/liblsquic/lsquic_version.h index fba9ee7..5054702 100644 --- a/src/liblsquic/lsquic_version.h +++ b/src/liblsquic/lsquic_version.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * lsquic_version.h -- version manipulation routines */ diff --git a/src/liblsquic/lsquic_xxhash.c b/src/liblsquic/lsquic_xxhash.c index de387b6..fc4cdf5 100644 --- a/src/liblsquic/lsquic_xxhash.c +++ b/src/liblsquic/lsquic_xxhash.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* xxHash - Fast Hash algorithm Copyright (C) 2012-2014, Yann Collet. diff --git a/src/liblsquic/lsquic_xxhash.h b/src/liblsquic/lsquic_xxhash.h index b8706a2..77e36d0 100644 --- a/src/liblsquic/lsquic_xxhash.h +++ b/src/liblsquic/lsquic_xxhash.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* xxHash - Extremely Fast Hash algorithm Header File diff --git a/src/lshpack/lshpack.c b/src/lshpack/lshpack.c index 53879c9..8479181 100644 --- a/src/lshpack/lshpack.c +++ b/src/lshpack/lshpack.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* MIT License diff --git a/src/lshpack/lshpack.h b/src/lshpack/lshpack.h index 41e1a36..a5b44c4 100644 --- a/src/lshpack/lshpack.h +++ b/src/lshpack/lshpack.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* MIT License diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c5614ad..d5aab3c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. INCLUDE(CheckFunctionExists) CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG) CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG) diff --git a/test/echo_client.c b/test/echo_client.c index b7c9891..22661fa 100644 --- a/test/echo_client.c +++ b/test/echo_client.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * 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. diff --git a/test/echo_server.c b/test/echo_server.c index cdef804..1cbf881 100644 --- a/test/echo_server.c +++ b/test/echo_server.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * echo_server.c -- QUIC server that echoes back input line by line */ diff --git a/test/http_client.c b/test/http_client.c index a8a1ab7..a98f9ac 100644 --- a/test/http_client.c +++ b/test/http_client.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * http_client.c -- A simple HTTP/QUIC client */ diff --git a/test/http_server.c b/test/http_server.c index 02fcb12..ee85533 100644 --- a/test/http_server.c +++ b/test/http_server.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * http_server.c -- A simple HTTP/QUIC server * diff --git a/test/md5_client.c b/test/md5_client.c index a1ee4ff..0f2e096 100644 --- a/test/md5_client.c +++ b/test/md5_client.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * md5_client.c -- This client sends one or more files to MD5 QUIC server * for MD5 sum calculation. diff --git a/test/md5_server.c b/test/md5_server.c index d5b4907..812bc28 100644 --- a/test/md5_server.c +++ b/test/md5_server.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * md5_server.c -- Read one or more streams from the client and return * MD5 sum of the payload. diff --git a/test/prog.c b/test/prog.c index e6990a4..b599016 100644 --- a/test/prog.c +++ b/test/prog.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #ifndef WIN32 #include diff --git a/test/prog.h b/test/prog.h index 6e2f93b..db0ba90 100644 --- a/test/prog.h +++ b/test/prog.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * prog.h -- common setup and options for QUIC program */ diff --git a/test/test_cert.c b/test/test_cert.c index dcf8d9a..b723544 100644 --- a/test/test_cert.c +++ b/test/test_cert.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/test_cert.h b/test/test_cert.h index eb45290..b4ce965 100644 --- a/test/test_cert.h +++ b/test/test_cert.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #ifndef TEST_CERT_H #define TEST_CERT_H diff --git a/test/test_common.c b/test/test_common.c index deb53b1..85eebb5 100644 --- a/test/test_common.c +++ b/test/test_common.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #if __GNUC__ #define _GNU_SOURCE /* For struct in6_pktinfo */ #endif diff --git a/test/test_common.h b/test/test_common.h index 43a4523..250fcce 100644 --- a/test/test_common.h +++ b/test/test_common.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Test client's and server's common components. */ diff --git a/test/unittests/CMakeLists.txt b/test/unittests/CMakeLists.txt index 8c528d5..4cdb6f6 100644 --- a/test/unittests/CMakeLists.txt +++ b/test/unittests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. +# Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. INCLUDE_DIRECTORIES(../../src/liblsquic) ENABLE_TESTING() diff --git a/test/unittests/graph_cubic.c b/test/unittests/graph_cubic.c index a20a653..bb945f4 100644 --- a/test/unittests/graph_cubic.c +++ b/test/unittests/graph_cubic.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * This is not really a test: this program prints out cwnd histogram * for visual inspection. diff --git a/test/unittests/mini_parse.c b/test/unittests/mini_parse.c index 0a09f90..acbefbe 100644 --- a/test/unittests/mini_parse.c +++ b/test/unittests/mini_parse.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Convert from our hexdump format to binary: * diff --git a/test/unittests/test_ack.c b/test/unittests/test_ack.c index 880c522..441c5fb 100644 --- a/test/unittests/test_ack.c +++ b/test/unittests/test_ack.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Test both generation and parsing of IETF ACK frames */ #include diff --git a/test/unittests/test_ack_merge.c b/test/unittests/test_ack_merge.c index 667e2d5..f8bbf7f 100644 --- a/test/unittests/test_ack_merge.c +++ b/test/unittests/test_ack_merge.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Test ACK merge */ #include diff --git a/test/unittests/test_ackgen_gquic_be.c b/test/unittests/test_ackgen_gquic_be.c index 5bd24df..9339b89 100644 --- a/test/unittests/test_ackgen_gquic_be.c +++ b/test/unittests/test_ackgen_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Test how ACK frame is encoded. Receive history module is tested by a * separate unit test. diff --git a/test/unittests/test_ackparse_gquic_be.c b/test/unittests/test_ackparse_gquic_be.c index 54b3ceb..afb2ef2 100644 --- a/test/unittests/test_ackparse_gquic_be.c +++ b/test/unittests/test_ackparse_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_ackparse_ietf.c b/test/unittests/test_ackparse_ietf.c index c14f91d..49d3f73 100644 --- a/test/unittests/test_ackparse_ietf.c +++ b/test/unittests/test_ackparse_ietf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_alarmset.c b/test/unittests/test_alarmset.c index 58a293c..6af4830 100644 --- a/test/unittests/test_alarmset.c +++ b/test/unittests/test_alarmset.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_alt_svc_ver.c b/test/unittests/test_alt_svc_ver.c index bbc92dd..3cb68b7 100644 --- a/test/unittests/test_alt_svc_ver.c +++ b/test/unittests/test_alt_svc_ver.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include diff --git a/test/unittests/test_arr.c b/test/unittests/test_arr.c index 1906c0c..e93d3e4 100644 --- a/test/unittests/test_arr.c +++ b/test/unittests/test_arr.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include "lsquic_arr.h" diff --git a/test/unittests/test_attq.c b/test/unittests/test_attq.c index 0028112..9703607 100644 --- a/test/unittests/test_attq.c +++ b/test/unittests/test_attq.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_blocked_gquic_be.c b/test/unittests/test_blocked_gquic_be.c index 1a97cc5..821fceb 100644 --- a/test/unittests/test_blocked_gquic_be.c +++ b/test/unittests/test_blocked_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_bw_sampler.c b/test/unittests/test_bw_sampler.c index 11b0fa0..51c7567 100644 --- a/test/unittests/test_bw_sampler.c +++ b/test/unittests/test_bw_sampler.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Test adapted from Chromium bandwidth_sampler_test.cc */ // Copyright 2016 The Chromium Authors. All rights reserved. diff --git a/test/unittests/test_chlo_gen.c b/test/unittests/test_chlo_gen.c index 109adad..cf041c3 100644 --- a/test/unittests/test_chlo_gen.c +++ b/test/unittests/test_chlo_gen.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * test_chlo_gen.c -- Test Client Hello generation. */ diff --git a/test/unittests/test_clear_aead.c b/test/unittests/test_clear_aead.c index f1b336b..c97beb0 100644 --- a/test/unittests/test_clear_aead.c +++ b/test/unittests/test_clear_aead.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * See * https://github.com/quicwg/base-drafts/wiki/Test-Vector-for-the-Clear-Text-AEAD-key-derivation diff --git a/test/unittests/test_conn_close_gquic_be.c b/test/unittests/test_conn_close_gquic_be.c index 7413be1..dfc2e76 100644 --- a/test/unittests/test_conn_close_gquic_be.c +++ b/test/unittests/test_conn_close_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_conn_hash.c b/test/unittests/test_conn_hash.c index 2034171..ad7b165 100644 --- a/test/unittests/test_conn_hash.c +++ b/test/unittests/test_conn_hash.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_crypto_gen.c b/test/unittests/test_crypto_gen.c index 0189e9d..822cca1 100644 --- a/test/unittests/test_crypto_gen.c +++ b/test/unittests/test_crypto_gen.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_cubic.c b/test/unittests/test_cubic.c index 67655b1..91d23a4 100644 --- a/test/unittests/test_cubic.c +++ b/test/unittests/test_cubic.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_dec.c b/test/unittests/test_dec.c index b319781..67c62e6 100644 --- a/test/unittests/test_dec.c +++ b/test/unittests/test_dec.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * test_dec.c -- Benchmark decryption using aligned and non-aligned buffers. */ diff --git a/test/unittests/test_di_nocopy.c b/test/unittests/test_di_nocopy.c index 57e9cb8..165eeb5 100644 --- a/test/unittests/test_di_nocopy.c +++ b/test/unittests/test_di_nocopy.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Test the "nocopy" data in stream */ diff --git a/test/unittests/test_elision.c b/test/unittests/test_elision.c index 16e05ec..faf23aa 100644 --- a/test/unittests/test_elision.c +++ b/test/unittests/test_elision.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_engine_ctor.c b/test/unittests/test_engine_ctor.c index 8797a39..8e1ec32 100644 --- a/test/unittests/test_engine_ctor.c +++ b/test/unittests/test_engine_ctor.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_export_key.c b/test/unittests/test_export_key.c index e6e57b2..cfa4d76 100644 --- a/test/unittests/test_export_key.c +++ b/test/unittests/test_export_key.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_frame_chop.c b/test/unittests/test_frame_chop.c index 153f728..ef7d7be 100644 --- a/test/unittests/test_frame_chop.c +++ b/test/unittests/test_frame_chop.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Write several things to HEADERS stream and check the results. What * varies is the amount of bytes that are written to stream every time. diff --git a/test/unittests/test_frame_reader.c b/test/unittests/test_frame_reader.c index 5d6b7a7..0ae1d23 100644 --- a/test/unittests/test_frame_reader.c +++ b/test/unittests/test_frame_reader.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_frame_rw.c b/test/unittests/test_frame_rw.c index 3ef71ce..3edd1ea 100644 --- a/test/unittests/test_frame_rw.c +++ b/test/unittests/test_frame_rw.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * Generate a few thousand headers, frame them using frame writer, read them * using frame reader, parse them, and compare with the original list: the diff --git a/test/unittests/test_frame_writer.c b/test/unittests/test_frame_writer.c index 9c02d8f..8fd2554 100644 --- a/test/unittests/test_frame_writer.c +++ b/test/unittests/test_frame_writer.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_goaway_gquic_be.c b/test/unittests/test_goaway_gquic_be.c index acfe910..17fbf7e 100644 --- a/test/unittests/test_goaway_gquic_be.c +++ b/test/unittests/test_goaway_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_h3_framing.c b/test/unittests/test_h3_framing.c index 5481bb7..d4057c3 100644 --- a/test/unittests/test_h3_framing.c +++ b/test/unittests/test_h3_framing.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * test_h3_framing.c -- test generation of H3 frames */ diff --git a/test/unittests/test_hcsi_reader.c b/test/unittests/test_hcsi_reader.c index a61a0ba..467d53d 100644 --- a/test/unittests/test_hcsi_reader.c +++ b/test/unittests/test_hcsi_reader.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_hkdf.c b/test/unittests/test_hkdf.c index 691f1ac..1240eee 100644 --- a/test/unittests/test_hkdf.c +++ b/test/unittests/test_hkdf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_lsquic_hash.c b/test/unittests/test_lsquic_hash.c index 45e5889..c5f24c9 100644 --- a/test/unittests/test_lsquic_hash.c +++ b/test/unittests/test_lsquic_hash.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_malo.c b/test/unittests/test_malo.c index 3fb54e9..227f7e4 100644 --- a/test/unittests/test_malo.c +++ b/test/unittests/test_malo.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_min_heap.c b/test/unittests/test_min_heap.c index a1bbc80..094660f 100644 --- a/test/unittests/test_min_heap.c +++ b/test/unittests/test_min_heap.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Test min heap or benchmark heap creation */ /* Floyd mechanism has been removed. It's not faster. */ diff --git a/test/unittests/test_minmax.c b/test/unittests/test_minmax.c index 748c7ba..1b468ab 100644 --- a/test/unittests/test_minmax.c +++ b/test/unittests/test_minmax.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Tests adopted from Chromium windowed_filter_test.cc */ // Copyright (c) 2016 The Chromium Authors. All rights reserved. diff --git a/test/unittests/test_packet_out.c b/test/unittests/test_packet_out.c index 4bfd30a..0b75961 100644 --- a/test/unittests/test_packet_out.c +++ b/test/unittests/test_packet_out.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_packno_len.c b/test/unittests/test_packno_len.c index a378057..157200a 100644 --- a/test/unittests/test_packno_len.c +++ b/test/unittests/test_packno_len.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_parse.c b/test/unittests/test_parse.c index 998fb57..a196599 100644 --- a/test/unittests/test_parse.c +++ b/test/unittests/test_parse.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ int main (void) { diff --git a/test/unittests/test_parse_packet_in.c b/test/unittests/test_parse_packet_in.c index b955c10..70b8fa5 100644 --- a/test/unittests/test_parse_packet_in.c +++ b/test/unittests/test_parse_packet_in.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_purga.c b/test/unittests/test_purga.c index ee8485c..75a4772 100644 --- a/test/unittests/test_purga.c +++ b/test/unittests/test_purga.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_qlog.c b/test/unittests/test_qlog.c index 6881698..a48a4a8 100644 --- a/test/unittests/test_qlog.c +++ b/test/unittests/test_qlog.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_quic_be_floats.c b/test/unittests/test_quic_be_floats.c index 68f4e85..9d97a7d 100644 --- a/test/unittests/test_quic_be_floats.c +++ b/test/unittests/test_quic_be_floats.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_rechist.c b/test/unittests/test_rechist.c index d9853e8..47f08ca 100644 --- a/test/unittests/test_rechist.c +++ b/test/unittests/test_rechist.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_reg_pkt_headergen.c b/test/unittests/test_reg_pkt_headergen.c index 4aaebc9..a923081 100644 --- a/test/unittests/test_reg_pkt_headergen.c +++ b/test/unittests/test_reg_pkt_headergen.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_rst_stream_gquic_be.c b/test/unittests/test_rst_stream_gquic_be.c index 2e03ee5..eb6c190 100644 --- a/test/unittests/test_rst_stream_gquic_be.c +++ b/test/unittests/test_rst_stream_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_rst_stream_ietf.c b/test/unittests/test_rst_stream_ietf.c index 64a67d9..6e29874 100644 --- a/test/unittests/test_rst_stream_ietf.c +++ b/test/unittests/test_rst_stream_ietf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_rtt.c b/test/unittests/test_rtt.c index e255775..f7f5c53 100644 --- a/test/unittests/test_rtt.c +++ b/test/unittests/test_rtt.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_send_headers.c b/test/unittests/test_send_headers.c index f7ca372..9c2470c 100644 --- a/test/unittests/test_send_headers.c +++ b/test/unittests/test_send_headers.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * test_send_headers.c -- Test what happens when lsquic_stream_send_headers() * is called. diff --git a/test/unittests/test_senhist.c b/test/unittests/test_senhist.c index 2c8363a..1bbf7af 100644 --- a/test/unittests/test_senhist.c +++ b/test/unittests/test_senhist.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_set.c b/test/unittests/test_set.c index b042b9b..1a0b8cf 100644 --- a/test/unittests/test_set.c +++ b/test/unittests/test_set.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_sfcw.c b/test/unittests/test_sfcw.c index 300b20a..ca3e77f 100644 --- a/test/unittests/test_sfcw.c +++ b/test/unittests/test_sfcw.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_shi.c b/test/unittests/test_shi.c index d5746a8..4af07cf 100644 --- a/test/unittests/test_shi.c +++ b/test/unittests/test_shi.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_some_packets.c b/test/unittests/test_some_packets.c index dec8fdb..8ad0efd 100644 --- a/test/unittests/test_some_packets.c +++ b/test/unittests/test_some_packets.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* Tests in this file have been migrated out of maintest.c */ /* TODO: fix warnings */ diff --git a/test/unittests/test_spi.c b/test/unittests/test_spi.c index f9a0de2..7f35fd4 100644 --- a/test/unittests/test_spi.c +++ b/test/unittests/test_spi.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_stop_waiting_gquic_be.c b/test/unittests/test_stop_waiting_gquic_be.c index fd6c502..d1da871 100644 --- a/test/unittests/test_stop_waiting_gquic_be.c +++ b/test/unittests/test_stop_waiting_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_stream.c b/test/unittests/test_stream.c index c59580e..97e3d18 100644 --- a/test/unittests/test_stream.c +++ b/test/unittests/test_stream.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_streamgen.c b/test/unittests/test_streamgen.c index 7b25a32..15e3d70 100644 --- a/test/unittests/test_streamgen.c +++ b/test/unittests/test_streamgen.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_streamparse.c b/test/unittests/test_streamparse.c index d35987c..b425e96 100644 --- a/test/unittests/test_streamparse.c +++ b/test/unittests/test_streamparse.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_trapa.c b/test/unittests/test_trapa.c index def12cf..8ac7443 100644 --- a/test/unittests/test_trapa.c +++ b/test/unittests/test_trapa.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ /* * test_trapa.c -- Test transport parameters. */ diff --git a/test/unittests/test_varint.c b/test/unittests/test_varint.c index b08e656..27bf004 100644 --- a/test/unittests/test_varint.c +++ b/test/unittests/test_varint.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_ver_nego.c b/test/unittests/test_ver_nego.c index 08f4aa9..e63852f 100644 --- a/test/unittests/test_ver_nego.c +++ b/test/unittests/test_ver_nego.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include diff --git a/test/unittests/test_wuf_gquic_be.c b/test/unittests/test_wuf_gquic_be.c index 2646e49..006c35e 100644 --- a/test/unittests/test_wuf_gquic_be.c +++ b/test/unittests/test_wuf_gquic_be.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ #include #include #include