mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Release 2.19.6
- Don't process incoming ECN marks if ECN is not enabled. - Schedule ACK when incoming packet is marked with CE.
This commit is contained in:
parent
5488f41efa
commit
93e1e886ef
5 changed files with 29 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2020-08-20
|
||||||
|
- 2.19.6
|
||||||
|
- Don't process incoming ECN marks if ECN is not enabled.
|
||||||
|
- Schedule ACK when incoming packet is marked with CE.
|
||||||
|
|
||||||
2020-08-11
|
2020-08-11
|
||||||
- 2.19.5
|
- 2.19.5
|
||||||
- [BUGFIX] Generate frame record when moving an ACK from one buffered
|
- [BUGFIX] Generate frame record when moving an ACK from one buffered
|
||||||
|
|
|
@ -26,7 +26,7 @@ author = u'LiteSpeed Technologies'
|
||||||
# The short X.Y version
|
# The short X.Y version
|
||||||
version = u'2.19'
|
version = u'2.19'
|
||||||
# The full version, including alpha/beta/rc tags
|
# The full version, including alpha/beta/rc tags
|
||||||
release = u'2.19.5'
|
release = u'2.19.6'
|
||||||
|
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
|
@ -25,7 +25,7 @@ extern "C" {
|
||||||
|
|
||||||
#define LSQUIC_MAJOR_VERSION 2
|
#define LSQUIC_MAJOR_VERSION 2
|
||||||
#define LSQUIC_MINOR_VERSION 19
|
#define LSQUIC_MINOR_VERSION 19
|
||||||
#define LSQUIC_PATCH_VERSION 5
|
#define LSQUIC_PATCH_VERSION 6
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Engine flags:
|
* Engine flags:
|
||||||
|
|
|
@ -1662,8 +1662,15 @@ generate_ack_frame_for_pns (struct ietf_full_conn *conn,
|
||||||
struct lsquic_packet_out *packet_out, enum packnum_space pns,
|
struct lsquic_packet_out *packet_out, enum packnum_space pns,
|
||||||
lsquic_time_t now)
|
lsquic_time_t now)
|
||||||
{
|
{
|
||||||
|
const uint64_t *ecn_counts;
|
||||||
int has_missing, w;
|
int has_missing, w;
|
||||||
|
|
||||||
|
if (conn->ifc_incoming_ecn
|
||||||
|
&& lsquic_send_ctl_ecn_turned_on(&conn->ifc_send_ctl))
|
||||||
|
ecn_counts = conn->ifc_ecn_counts_in[pns];
|
||||||
|
else
|
||||||
|
ecn_counts = NULL;
|
||||||
|
|
||||||
w = conn->ifc_conn.cn_pf->pf_gen_ack_frame(
|
w = conn->ifc_conn.cn_pf->pf_gen_ack_frame(
|
||||||
packet_out->po_data + packet_out->po_data_sz,
|
packet_out->po_data + packet_out->po_data_sz,
|
||||||
lsquic_packet_out_avail(packet_out),
|
lsquic_packet_out_avail(packet_out),
|
||||||
|
@ -1671,7 +1678,7 @@ generate_ack_frame_for_pns (struct ietf_full_conn *conn,
|
||||||
(gaf_rechist_next_f) lsquic_rechist_next,
|
(gaf_rechist_next_f) lsquic_rechist_next,
|
||||||
(gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv,
|
(gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv,
|
||||||
&conn->ifc_rechist[pns], now, &has_missing, &packet_out->po_ack2ed,
|
&conn->ifc_rechist[pns], now, &has_missing, &packet_out->po_ack2ed,
|
||||||
conn->ifc_incoming_ecn ? conn->ifc_ecn_counts_in[pns] : NULL);
|
ecn_counts);
|
||||||
if (w < 0) {
|
if (w < 0) {
|
||||||
ABORT_ERROR("generating ACK frame failed: %d", errno);
|
ABORT_ERROR("generating ACK frame failed: %d", errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -6159,11 +6166,18 @@ many_in_and_will_write (struct ietf_full_conn *conn)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
try_queueing_ack_app (struct ietf_full_conn *conn,
|
try_queueing_ack_app (struct ietf_full_conn *conn,
|
||||||
int was_missing, lsquic_time_t now)
|
int was_missing, int ecn, lsquic_time_t now)
|
||||||
{
|
{
|
||||||
lsquic_time_t srtt, ack_timeout;
|
lsquic_time_t srtt, ack_timeout;
|
||||||
|
|
||||||
if (conn->ifc_n_slack_akbl[PNS_APP] >= conn->ifc_max_retx_since_last_ack
|
if (conn->ifc_n_slack_akbl[PNS_APP] >= conn->ifc_max_retx_since_last_ack
|
||||||
|
/* From [draft-ietf-quic-transport-29] Section 13.2.1:
|
||||||
|
" Similarly, packets marked with the ECN Congestion Experienced (CE)
|
||||||
|
" codepoint in the IP header SHOULD be acknowledged immediately, to
|
||||||
|
" reduce the peer's response time to congestion events.
|
||||||
|
*/
|
||||||
|
|| (ecn == ECN_CE
|
||||||
|
&& lsquic_send_ctl_ecn_turned_on(&conn->ifc_send_ctl))
|
||||||
|| ((conn->ifc_flags & IFC_ACK_HAD_MISS)
|
|| ((conn->ifc_flags & IFC_ACK_HAD_MISS)
|
||||||
&& was_missing && conn->ifc_n_slack_akbl[PNS_APP] > 0)
|
&& was_missing && conn->ifc_n_slack_akbl[PNS_APP] > 0)
|
||||||
|| many_in_and_will_write(conn))
|
|| many_in_and_will_write(conn))
|
||||||
|
@ -6208,10 +6222,10 @@ try_queueing_ack_init_or_hsk (struct ietf_full_conn *conn,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
try_queueing_ack (struct ietf_full_conn *conn, enum packnum_space pns,
|
try_queueing_ack (struct ietf_full_conn *conn, enum packnum_space pns,
|
||||||
int was_missing, lsquic_time_t now)
|
int was_missing, int ecn, lsquic_time_t now)
|
||||||
{
|
{
|
||||||
if (PNS_APP == pns)
|
if (PNS_APP == pns)
|
||||||
try_queueing_ack_app(conn, was_missing, now);
|
try_queueing_ack_app(conn, was_missing, ecn, now);
|
||||||
else
|
else
|
||||||
try_queueing_ack_init_or_hsk(conn, pns);
|
try_queueing_ack_init_or_hsk(conn, pns);
|
||||||
}
|
}
|
||||||
|
@ -6612,7 +6626,8 @@ process_regular_packet (struct ietf_full_conn *conn,
|
||||||
else
|
else
|
||||||
was_missing = 0;
|
was_missing = 0;
|
||||||
conn->ifc_n_slack_all += PNS_APP == pns;
|
conn->ifc_n_slack_all += PNS_APP == pns;
|
||||||
try_queueing_ack(conn, pns, was_missing, packet_in->pi_received);
|
try_queueing_ack(conn, pns, was_missing,
|
||||||
|
lsquic_packet_in_ecn(packet_in), packet_in->pi_received);
|
||||||
}
|
}
|
||||||
conn->ifc_incoming_ecn <<= 1;
|
conn->ifc_incoming_ecn <<= 1;
|
||||||
conn->ifc_incoming_ecn |=
|
conn->ifc_incoming_ecn |=
|
||||||
|
|
|
@ -407,4 +407,6 @@ int
|
||||||
lsquic_send_ctl_can_send_probe (const struct lsquic_send_ctl *,
|
lsquic_send_ctl_can_send_probe (const struct lsquic_send_ctl *,
|
||||||
const struct network_path *);
|
const struct network_path *);
|
||||||
|
|
||||||
|
#define lsquic_send_ctl_ecn_turned_on(ctl_) ((ctl_)->sc_flags & SC_ECN)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue