Commit d1986abe authored by jan.koester's avatar jan.koester
Browse files

deb



Co-authored-by: default avatarCopilot <copilot@github.com>
parent 1b818a4c
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
libnetplus (20260504+1) unstable; urgency=medium

libnetplus (20260504+2) unstable; urgency=medium

  * QUIC: implement PTO (Probe Timeout, RFC 9002 §6.2) — retransmit
    the oldest unacked packet with exponential back-off when the peer
    has not acknowledged tail packets, fixing the "tail loss" deadlock
    where both sides wait indefinitely after the last few UDP datagrams
    are lost
  * QUIC: pumpNetwork() now calls checkLossAndRetransmit() so that
    callers waiting for responses (e.g. parity store_stripe Phase 2)
    trigger retransmission of lost packets
  * QUIC: fix sendStreamData(vector) silently losing data on congestion
    control stall — now retries in a loop with pumpIncoming() between
    attempts until all data (including FIN) is delivered
  * QUIC: only mark stream send_fin when all data was actually sent on
    the wire, preventing incorrect state when CC breaks the send loop

 -- Jan Koester <jan.koester@tuxist.de>  Sun, 04 May 2026 19:00:00 +0200
 -- Jan Koester <jan.koester@tuxist.de>  Sun, 04 May 2026 19:30:00 +0200

libnetplus (20260502+1) unstable; urgency=medium

+2 −3
Original line number Diff line number Diff line
@@ -3629,7 +3629,6 @@ void quic::checkLossAndRetransmit() {
        if (age >= pto_thresh) {
            // Retransmit the oldest unacked packet as a probe
            auto sp = oldest; // copy — will be erased below
            uint64_t old_pn = _sent_packets.begin()->first;
            _sent_packets.erase(_sent_packets.begin());
            ++_pto_count;

@@ -3659,8 +3658,8 @@ void quic::checkLossAndRetransmit() {
                                    sp.stream_data.data(), sp.stream_data.size(),
                                    sp.fin, packet.size());
                }
                QUIC_DBG("PTO probe: old_pn=%lu new_pn=%lu age=%.3fs pto=%.3fs",
                         (unsigned long)old_pn, (unsigned long)new_pn, age, pto_thresh);
                QUIC_DBG("PTO probe: new_pn=%lu age=%.3fs pto=%.3fs",
                         (unsigned long)new_pn, age, pto_thresh);
            }
        }
    }