fix: only using xsync with pointer to avoid unaligned 64-bit atomic operation
closed #783
This commit is contained in:
parent
92129b33e7
commit
ed210ee403
1 changed files with 3 additions and 3 deletions
|
@ -47,7 +47,7 @@ type clientImpl struct {
|
||||||
openStreams atomic.Int64
|
openStreams atomic.Int64
|
||||||
closed atomic.Bool
|
closed atomic.Bool
|
||||||
|
|
||||||
udpInputMap xsync.MapOf[uint16, net.Conn]
|
udpInputMap *xsync.MapOf[uint16, net.Conn]
|
||||||
|
|
||||||
// only ready for PoolClient
|
// only ready for PoolClient
|
||||||
dialerRef C.Dialer
|
dialerRef C.Dialer
|
||||||
|
@ -270,7 +270,7 @@ func (t *clientImpl) forceClose(quicConn quic.Connection, err error) {
|
||||||
if quicConn != nil {
|
if quicConn != nil {
|
||||||
_ = quicConn.CloseWithError(ProtocolError, errStr)
|
_ = quicConn.CloseWithError(ProtocolError, errStr)
|
||||||
}
|
}
|
||||||
udpInputMap := &t.udpInputMap
|
udpInputMap := t.udpInputMap
|
||||||
udpInputMap.Range(func(key uint16, value net.Conn) bool {
|
udpInputMap.Range(func(key uint16, value net.Conn) bool {
|
||||||
conn := value
|
conn := value
|
||||||
_ = conn.Close()
|
_ = conn.Close()
|
||||||
|
@ -406,7 +406,7 @@ func NewClient(clientOption *ClientOption, udp bool, dialerRef C.Dialer) *Client
|
||||||
ClientOption: clientOption,
|
ClientOption: clientOption,
|
||||||
udp: udp,
|
udp: udp,
|
||||||
dialerRef: dialerRef,
|
dialerRef: dialerRef,
|
||||||
udpInputMap: *xsync.NewMapOf[uint16, net.Conn](),
|
udpInputMap: xsync.NewMapOf[uint16, net.Conn](),
|
||||||
}
|
}
|
||||||
c := &Client{ci}
|
c := &Client{ci}
|
||||||
runtime.SetFinalizer(c, closeClient)
|
runtime.SetFinalizer(c, closeClient)
|
||||||
|
|
Loading…
Reference in a new issue