TCP: Fixes - allow for live monitoring of ACK progress

This commit is contained in:
2026-03-04 15:54:40 +01:00
parent 3f8736dd34
commit 536fc0761d
8 changed files with 318 additions and 15 deletions

View File

@@ -460,13 +460,10 @@ void TCPStreamPusherSocket::AckThread() {
last_ack_error = "CANCEL rejected";
} else if (ack_for == TCPFrameType::DATA) {
data_acked_total.fetch_add(1, std::memory_order_relaxed);
last_processed_images.store(h.ack_processed_images, std::memory_order_relaxed);
if (ok && !fatal) {
data_acked_ok.fetch_add(1, std::memory_order_relaxed);
} else {
data_acked_bad.fetch_add(1, std::memory_order_relaxed);
broken = true; // mandatory DATA ACK mode: bad DATA ACK breaks stream
if (error_text.empty())
last_ack_error = "DATA ACK failed";
logger.Error("Received failing DATA ACK on " + endpoint + ": " + last_ack_error);
@@ -497,7 +494,6 @@ void TCPStreamPusherSocket::StartWriterThread() {
data_acked_ok.store(0, std::memory_order_relaxed);
data_acked_bad.store(0, std::memory_order_relaxed);
data_acked_total.store(0, std::memory_order_relaxed);
last_processed_images.store(0, std::memory_order_relaxed);
active = true;
send_future = std::async(std::launch::async, &TCPStreamPusherSocket::WriterThread, this);
@@ -598,6 +594,5 @@ ImagePusherAckProgress TCPStreamPusherSocket::GetDataAckProgress() const {
p.data_acked_bad = data_acked_bad.load(std::memory_order_relaxed);
p.data_acked_total = data_acked_total.load(std::memory_order_relaxed);
p.data_ack_pending = (p.data_sent >= p.data_acked_total) ? (p.data_sent - p.data_acked_total) : 0;
p.last_processed_images = last_processed_images.load(std::memory_order_relaxed);
return p;
}