ping: Fix unprivileged conn

This commit is contained in:
世界 2026-06-01 17:40:22 +08:00
parent 23eaeb3198
commit 568357315c
No known key found for this signature in database
GPG key ID: CD109927C34A63C4

View file

@ -94,8 +94,9 @@ func (c *UnprivilegedConn) Write(b []byte) (n int, err error) {
} }
c.mappingAccess.Lock() c.mappingAccess.Lock()
if c.ctx.Err() != nil { if err = c.ctx.Err(); err != nil {
return 0, c.ctx.Err() c.mappingAccess.Unlock()
return 0, err
} }
conn, loaded := c.mapping[identifier] conn, loaded := c.mapping[identifier]
if !loaded { if !loaded {
@ -159,10 +160,13 @@ func (c *UnprivilegedConn) fetchResponse(conn *net.UDPConn, identifier uint16) {
func (c *UnprivilegedConn) removeConn(conn *net.UDPConn, identifier uint16) { func (c *UnprivilegedConn) removeConn(conn *net.UDPConn, identifier uint16) {
c.mappingAccess.Lock() c.mappingAccess.Lock()
defer c.mappingAccess.Unlock() mappedConn, loaded := c.mapping[identifier]
_ = conn.Close() if loaded && mappedConn == conn {
delete(c.mapping, identifier) delete(c.mapping, identifier)
} }
c.mappingAccess.Unlock()
_ = conn.Close()
}
func (c *UnprivilegedConn) Close() error { func (c *UnprivilegedConn) Close() error {
c.mappingAccess.Lock() c.mappingAccess.Lock()