reassembly: ReassembledSG-ReassemblyComplete call order invariant is sometimes broken
- Dominant language
- Go
- Stars
- 6.8k
- Forks
- 1.2k
- PR merge metrics
- No merged PRs in 30d
Description
I haven't really debugged why it happens, but I have a test case.
There're two separate sessions in this file, which reuse TCP port (i.e. TCP/IP 4-tuple is the same). They're both propery closed (however, not from the point of view of reassembly, which makes this related to #427)
At the very end FlushCloseOlderThan is called with date set in future, and somehow ReassembledSG gets called after ReassemblyComplete.
https://gist.github.com/WGH-/e008ae99df08c3d557b18f23a57fea72
http://cdn.big.dong.solutions/a2441ae2-62c4-4cb7-b2dc-fc26e3f40902/reassembly_broken_invariant.pcap
```
2018/03/21 03:30:40 Calling FlushCloseOlderThan
2018/03/21 03:30:40 stream #1: ReassembledSG
2018/03/21 03:30:40 stream #1: ReassemblyComplete
2018/03/21 03:30:40 stream #1: ReassembledSG
2018/03/21 03:30:40 Got ReassembledSG after ReassemblyComplete 10.65.85.1->10.66.85.2 60922->4242!
```
Contributor guide
Assessment
This issue has not been assessed yet.