mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Update CHANGELOG, a few changes
This commit is contained in:
parent
34b068c133
commit
da710addee
5 changed files with 30 additions and 23 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-04-02
|
||||
|
||||
- [FEATURE] Windows support
|
||||
|
||||
- Reduce stack use -- outgoing packet batch is now allocated on the heap.
|
||||
|
||||
2018-03-09
|
||||
|
||||
- [OPTIMIZATION] Merge series of ACKs if possible
|
||||
|
|
|
@ -135,6 +135,8 @@ The client library has been tested on the following platforms:
|
|||
- ARM (Raspberry Pi 3)
|
||||
- FreeBSD
|
||||
- i386
|
||||
- Windows
|
||||
- x86_64
|
||||
- MacOS
|
||||
- x86_64
|
||||
|
||||
|
|
|
@ -63,6 +63,13 @@
|
|||
#define MIN_OUT_BATCH_SIZE 256
|
||||
#define INITIAL_OUT_BATCH_SIZE 512
|
||||
|
||||
struct out_batch
|
||||
{
|
||||
lsquic_conn_t *conns [MAX_OUT_BATCH_SIZE];
|
||||
lsquic_packet_out_t *packets[MAX_OUT_BATCH_SIZE];
|
||||
struct lsquic_out_spec outs [MAX_OUT_BATCH_SIZE];
|
||||
};
|
||||
|
||||
typedef struct lsquic_conn * (*conn_iter_f)(struct lsquic_engine *);
|
||||
|
||||
static void
|
||||
|
@ -196,6 +203,7 @@ struct lsquic_engine
|
|||
*/
|
||||
lsquic_time_t last_sent;
|
||||
lsquic_time_t deadline;
|
||||
struct out_batch out_batch;
|
||||
};
|
||||
|
||||
|
||||
|
@ -1156,14 +1164,6 @@ encrypt_packet (lsquic_engine_t *engine, const lsquic_conn_t *conn,
|
|||
}
|
||||
|
||||
|
||||
struct out_batch
|
||||
{
|
||||
lsquic_conn_t *conns [MAX_OUT_BATCH_SIZE];
|
||||
lsquic_packet_out_t *packets[MAX_OUT_BATCH_SIZE];
|
||||
struct lsquic_out_spec outs [MAX_OUT_BATCH_SIZE];
|
||||
};
|
||||
|
||||
|
||||
STAILQ_HEAD(closed_conns, lsquic_conn);
|
||||
|
||||
|
||||
|
@ -1363,7 +1363,7 @@ send_packets_out (struct lsquic_engine *engine,
|
|||
unsigned n, w, n_sent, n_batches_sent;
|
||||
lsquic_packet_out_t *packet_out;
|
||||
lsquic_conn_t *conn;
|
||||
struct out_batch batch;
|
||||
struct out_batch *const batch = &engine->out_batch;
|
||||
struct conns_out_iter conns_iter;
|
||||
int shrink, deadline_exceeded;
|
||||
|
||||
|
@ -1415,24 +1415,24 @@ send_packets_out (struct lsquic_engine *engine,
|
|||
assert(conn->cn_flags & LSCONN_HAS_PEER_SA);
|
||||
if (packet_out->po_flags & PO_ENCRYPTED)
|
||||
{
|
||||
batch.outs[n].buf = packet_out->po_enc_data;
|
||||
batch.outs[n].sz = packet_out->po_enc_data_sz;
|
||||
batch->outs[n].buf = packet_out->po_enc_data;
|
||||
batch->outs[n].sz = packet_out->po_enc_data_sz;
|
||||
}
|
||||
else
|
||||
{
|
||||
batch.outs[n].buf = packet_out->po_data;
|
||||
batch.outs[n].sz = packet_out->po_data_sz;
|
||||
batch->outs[n].buf = packet_out->po_data;
|
||||
batch->outs[n].sz = packet_out->po_data_sz;
|
||||
}
|
||||
batch.outs [n].peer_ctx = conn->cn_peer_ctx;
|
||||
batch.outs [n].local_sa = (struct sockaddr *) conn->cn_local_addr;
|
||||
batch.outs [n].dest_sa = (struct sockaddr *) conn->cn_peer_addr;
|
||||
batch.conns [n] = conn;
|
||||
batch.packets[n] = packet_out;
|
||||
batch->outs [n].peer_ctx = conn->cn_peer_ctx;
|
||||
batch->outs [n].local_sa = (struct sockaddr *) conn->cn_local_addr;
|
||||
batch->outs [n].dest_sa = (struct sockaddr *) conn->cn_peer_addr;
|
||||
batch->conns [n] = conn;
|
||||
batch->packets[n] = packet_out;
|
||||
++n;
|
||||
if (n == engine->batch_size)
|
||||
{
|
||||
n = 0;
|
||||
w = send_batch(engine, &conns_iter, &batch, engine->batch_size);
|
||||
w = send_batch(engine, &conns_iter, batch, engine->batch_size);
|
||||
++n_batches_sent;
|
||||
n_sent += w;
|
||||
if (w < engine->batch_size)
|
||||
|
@ -1449,7 +1449,7 @@ send_packets_out (struct lsquic_engine *engine,
|
|||
end_for:
|
||||
|
||||
if (n > 0) {
|
||||
w = send_batch(engine, &conns_iter, &batch, n);
|
||||
w = send_batch(engine, &conns_iter, batch, n);
|
||||
n_sent += w;
|
||||
shrink = w < n;
|
||||
++n_batches_sent;
|
||||
|
|
|
@ -1362,9 +1362,8 @@ lsquic_send_ctl_elide_stream_frames (lsquic_send_ctl_t *ctl, uint32_t stream_id)
|
|||
for (packet_out = TAILQ_FIRST(&ctl->sc_buffered_packets[n].bpq_packets);
|
||||
packet_out; packet_out = next)
|
||||
{
|
||||
if (!(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)))
|
||||
continue;
|
||||
next = TAILQ_NEXT(packet_out, po_next);
|
||||
assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM));
|
||||
lsquic_packet_out_elide_reset_stream_frames(packet_out, stream_id);
|
||||
if (0 == packet_out->po_frame_types)
|
||||
{
|
||||
|
|
|
@ -83,7 +83,7 @@ lsquic_stream_acked (lsquic_stream_t *stream)
|
|||
static void
|
||||
elide_single_stream_frame (void)
|
||||
{
|
||||
struct packet_out_srec_iter posi = { 0 };
|
||||
struct packet_out_srec_iter posi;
|
||||
struct lsquic_engine_public enpub;
|
||||
lsquic_stream_t streams[1];
|
||||
lsquic_packet_out_t *packet_out;
|
||||
|
|
Loading…
Reference in a new issue