mirror of
https://github.com/impact-eintr/netstack.git
synced 2025-10-06 05:16:50 +08:00
正常结束 RST情况没有处理
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
Reference in New Issue
Block a user