正常结束 RST情况没有处理

This commit is contained in:
impact-eintr
2022-12-28 17:01:43 +08:00
parent 2f04134bfe
commit bf36d95d3a
8 changed files with 199 additions and 56 deletions

View File

@@ -7,6 +7,7 @@ import (
"netstack/waiter"
"reflect"
"strings"
"sync"
"sync/atomic"
"time"
)
@@ -638,3 +639,36 @@ func (a Address) String() string {
return fmt.Sprintf("%s", string(a))
}
}
// danglingEndpointsMu protects access to danglingEndpoints.
// 一个摇摆不定的端点 一个行将就木的端点
var danglingEndpointsMu sync.Mutex
// danglingEndpoints tracks all dangling endpoints no longer owned by the app.
var danglingEndpoints = make(map[Endpoint]struct{})
// GetDanglingEndpoints returns all dangling endpoints.
func GetDanglingEndpoints() []Endpoint {
es := make([]Endpoint, 0, len(danglingEndpoints))
danglingEndpointsMu.Lock()
for e := range danglingEndpoints {
es = append(es, e)
}
danglingEndpointsMu.Unlock()
return es
}
// AddDanglingEndpoint adds a dangling endpoint.
func AddDanglingEndpoint(e Endpoint) {
danglingEndpointsMu.Lock()
danglingEndpoints[e] = struct{}{}
danglingEndpointsMu.Unlock()
}
// DeleteDanglingEndpoint removes a dangling endpoint.
func DeleteDanglingEndpoint(e Endpoint) {
danglingEndpointsMu.Lock()
delete(danglingEndpoints, e)
danglingEndpointsMu.Unlock()
}