Update group member status basing on packet type #1448
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This provides two fixes:
When a data packet is coming in, the link turns IDLE -> RUNNING. Even if the packet is going to be effectively rejected. This is important because RUNNING links will not get updated the reception sequence when the buffer is empty. Updating this sequence while data packets were received was causing the "runaway train" effect, that is, while every incoming packet would come with increasing sequence, the synchronization was pushing the sequence forward in the meantime, which caused that incoming packets were seen as belated virtually forever.
Turning link to IDLE on sender state in case when keepalive has come and the link is outside the "temporary activation" state. The second condition prevents the link from being treated as IDLE in case when it was just activated and still tries to transmit old packets that are not surely acknowledged, but have been actually received over a broken link. This "initial burst" that happens after the link switch might effectively delay the ACK report and make the receiver side generate a KEEPALIVE message.