endpoints created during a passive connect not saved
Open
area: networking
area: save/restore
revived
type: bug
- Dominant language
- Go
- Stars
- 19.3k
- Forks
- 2k
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 264
Description
The S/R framework discovers endpoints by following the fd table in gvisor or from the endpoints in danglingEndpoints map. But endpoints which are in a passive handshake and not yet delivered to accept queue of a listening socket are not tracked anywhere. Which means that across a S/R such endpoints are not saved.
Further on Resume we assume that any connection in synRecv state was an active connect which is incorrect and it also proceeds to bind() which can fail as the listening socket may already have bound the endpoint. We need a different way to restore such endpoints.
Contributor guide
Assessment
This issue has not been assessed yet.