google / google/gvisor

endpoints created during a passive connect not saved

Open
#1,688 4 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.