Skip to content

Commit 3193260

Browse files
committed
logic improvements and docs
1 parent d8016cd commit 3193260

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/cfdppy/handler/dest.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,8 +567,6 @@ def __non_idle_fsm(self, packet: GenericPduPacket | None) -> None:
567567
if self.states.step == TransactionStep.WAITING_FOR_MISSING_DATA:
568568
if packet is not None and pdu_holder.pdu_type == PduType.FILE_DATA:
569569
self._handle_fd_pdu(pdu_holder.to_file_data_pdu())
570-
if self._params.acked_params.deferred_lost_segment_detection_active:
571-
self._reset_nak_activity_parameters()
572570
if self._params.acked_params.deferred_lost_segment_detection_active:
573571
self._deferred_lost_segment_handling()
574572
if self.states.step == TransactionStep.TRANSFER_COMPLETION:
@@ -779,10 +777,12 @@ def _handle_waiting_for_missing_metadata(self, packet_holder: PduHolder) -> None
779777
self._handle_file_data_without_previous_metadata(packet_holder.to_file_data_pdu())
780778
elif packet_holder.pdu_directive_type == DirectiveType.METADATA_PDU:
781779
self._handle_metadata_packet(packet_holder.to_metadata_pdu())
780+
# Reception of missing segments resets the NAK activity parameters. See CFDP 4.6.4.7.
782781
if self._params.acked_params.deferred_lost_segment_detection_active:
783782
self._reset_nak_activity_parameters()
784783
elif packet_holder.pdu_directive_type == DirectiveType.EOF_PDU: # type: ignore
785784
self._handle_eof_without_previous_metadata(packet_holder.to_eof_pdu())
785+
# Reception of missing segments resets the NAK activity parameters. See CFDP 4.6.4.7.
786786
if self._params.acked_params.deferred_lost_segment_detection_active:
787787
self._reset_nak_activity_parameters()
788788

@@ -908,9 +908,13 @@ def _lost_segment_handling(self, offset: int, data_len: int) -> None:
908908
self._params.acked_params.last_end_offset = offset + data_len
909909
if offset + data_len <= self._params.acked_params.last_start_offset:
910910
# Might be a re-requested FD PDU.
911-
_ = self._params.acked_params.lost_seg_tracker.remove_lost_segment(
911+
removed = self._params.acked_params.lost_seg_tracker.remove_lost_segment(
912912
(offset, offset + data_len)
913913
)
914+
# Reception of missing segments resets the NAK activity parameters.
915+
# See CFDP 4.6.4.7.
916+
if removed and self._params.acked_params.deferred_lost_segment_detection_active:
917+
self._reset_nak_activity_parameters()
914918

915919
@staticmethod
916920
def _iter_segment_requests(

0 commit comments

Comments
 (0)