-
Bug
-
Resolution: Done
-
Major
-
None
-
None
If we have A and B:
A: 5 6 7 8 9 and
B: -
- A sends #5 - # 9 to B, then B will send a SEND_FIRST_SEQNO to A per message for a total of 5
- A resends #5 with a conn-id of (say) 322649
- B creates the receiver window for A with conn-id=322649 and adds #5, then removes it and acks #5
- A receives an ack for #5 and removes #5 from it sender window
- A then receives the next (stale) SEND_FIRST_SEQNO request
- A now resends #6 with a conn-id=322649
---> B drops #6 (and all subsequent messages) with conn-id=322649 !
==> The simple solution is to not drop messages with a conn-id if the receiver window already exists and the conn-ids match
Potential issue: what if we re-send #6 with conn-id=322649 before #5 with conn-id=322649 ?
- A message on the sender side is only removed if it received an ACK from the receiver
- Reception of an ACK means the receiver window was created
- When we receive ACK(5), that means we created a receiver window on B with conn-id=322649 and added #5
- Therefore the re-sending of #6 with conn-id=322649 will never happen before the receiver window on B is created for #5 and conn-id=322649 !