Description
The inetstack implementation and the simulator trace test for simultaneous close were both incorrect. In particular, they resent the FIN packet without the FIN bit set while in the Closing state, causing the other end to hang in a simultaneous close scenario.
How to Reproduce
After adding synchronization points for our TCP unit tests, the tcp_bad_* tests were hitting the simultaneous close scenario frequently causing them to fail.
Expected Behavior
If both end of a TCP connection independently call close, the connection should be shut down gracefully in a symmetric manner.
Related Issues
#1529