p-quic / pquic

The PQUIC implementation, a framework that enables QUIC clients and servers to dynamically exchange protocol plugins that extend the protocol on a per-connection basis
https://pquic.org
MIT License
126 stars 20 forks source link

Incorrect way of prunning the retransmission queue. #38

Open QUICTester opened 1 year ago

QUICTester commented 1 year ago

Hi, During testing commit https://github.com/p-quic/pquic/commit/841c82289b23d32c28723a0175654ecc6baeae08, we discovered that the PQUIC server uses Picoquic code that does not correctly prune the retransmission queue in picoquic/sender.c:picoquic_implicit_handshake_ack().

The pruning direction on the retransmission queue is opposite to how the packets are added in picoquic/sender.c:picoquic_queue_for_retransmit().

Therefore the picoquic_packet_t* p_next = p->next_packet; in picoquic/sender.c:picoquic_implicit_handshake_ack() should be picoquic_packet_t* p_next = p->previous_packet;

mpiraux commented 11 months ago

Could you test #39 as a potential fix ?

QUICTester commented 10 months ago

Yes, it does not have any problem anymore when we test.