Destination handler now answers a retransmitted EOF PDU instead of silently reprocessing it. Per CFDP 4.7.2 every EOF PDU must be acknowledged, and a retransmission means our previous ACK was lost. It used to be handled like a brand new EOF regardless of transaction state, which re-ran completion, re-sent a fresh Finished PDU, and restarted its positive ACK procedure on every retransmission the sender made.
3.0 KiB
3.0 KiB
Change Log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
unreleased
- Bumped
spacepacketsto v0.18
Fixed
- Destination handler's
TransactionParams::resetnow resets all fields instead of just two. The incomplete reset left stale acknowledged-mode state behind, so a new transaction's Metadata PDU was mistaken for a duplicate of an already-processed one and silently dropped, breaking every transfer after the first one on a given destination handler instance. - Source handler's
TransactionParams::resethad the same issue. A second transaction on the same source handler instance could compute its EOF checksum over stale state left behind by the first one. - Metadata-only transactions (e.g. a Proxy Put Request per CCSDS 727.0-B-5 6.1) now correctly send and expect an EOF (No error) PDU, as required by 4.6.1.1.9 case (C). The source handler no longer tries to checksum a source file that does not exist for this case, and the destination handler no longer tries to create or truncate a destination file that was never named.
- Destination handler no longer panics when a metadata PDU's Message To User TLVs overflow its
internal buffer. It now returns
DestError::MsgsToUserBufferTooSmallinstead, and the buffer was bumped from 1024 to 2048 bytes. - Destination handler's
lost_segment_handlingnow clears a gap that a retransmission exactly refills. It used to compare the end of the received segment against the start of the most recently received window instead of its end, so such a retransmission matched neither branch and the gap stayed in the tracker, causing the destination to re-request data it had already written on every NAK round until it hit its NAK limit. - Destination handler now answers a retransmitted EOF PDU instead of silently reprocessing it. Per CFDP 4.7.2 every EOF PDU must be acknowledged, and a retransmission means our previous ACK was lost. It used to be handled like a brand new EOF regardless of transaction state, which re-ran completion, re-sent a fresh Finished PDU, and restarted its positive ACK procedure on every retransmission the sender made.
v0.3.0 2025-09-25
- Bumped
spacepacketsto v0.16 - Bumped
defmtto v1
Added
- Acknowledged mode support for both source and destination handler.
FaultInfostructure which is passed to user fault callbacks.
v0.2.0 2024-11-26
- Bumped
thiserrorto v2 - Bumped
spacepacketsto v0.13 - The source and destination handlers can now be used without the
stdfeature and only require theallocfeature.
[v0.1.0] 2024-09-11
Initial release