Skip to content

Read Segmentation Robustness  #149

@NateZimmer

Description

@NateZimmer

Node BACstack Version: xxx.13 / PR131

Issue: Segmentation handling could use some TLC

How it currently works: There is 1 segmentation array per instance of this library. If a segment is missed, _lastSequenceNumber can get stuck at a non-zero value and subsequent segment ACKs will NACK due to a mis-match in state. Also, if multiple segments are being received at the same time, the library can get confused

Minor fix: Reset _lastSequenceNumber based upon APDU timeout expiring on the last received segment. This avoids the library getting stuck in a bad state

Proper fix: Each segmented/fragmented response should be stored in a temporary array indexed on the following :

  • per device address (ideally w/ routing support)
    • per device invoke id / sequence number

Array should be cleaned up either on successful reassembly or APDU timeout of the first request and/or of the last valid segment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions