mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-09-22 22:58:03 +03:00
WireGuard outbound: Fix a race condition (#6461)
Fixes https://github.com/XTLS/Xray-core/pull/6321#issuecomment-4881463309
This commit is contained in:
@@ -139,13 +139,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
|
|||||||
ob.Name = "wireguard"
|
ob.Name = "wireguard"
|
||||||
ob.CanSpliceCopy = 3
|
ob.CanSpliceCopy = 3
|
||||||
|
|
||||||
if h.dev == nil {
|
if err := h.init(ctx); err != nil {
|
||||||
if err := h.init(ctx); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := h.dev.Up(); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,8 +252,11 @@ func (h *Handler) Close() (err error) {
|
|||||||
func (h *Handler) init(ctx context.Context) error {
|
func (h *Handler) init(ctx context.Context) error {
|
||||||
h.mu.Lock()
|
h.mu.Lock()
|
||||||
defer h.mu.Unlock()
|
defer h.mu.Unlock()
|
||||||
|
if h.tun == nil {
|
||||||
|
return errors.New("closed")
|
||||||
|
}
|
||||||
if h.dev != nil {
|
if h.dev != nil {
|
||||||
return nil
|
return h.dev.Up()
|
||||||
}
|
}
|
||||||
resolveFunc := h.resolveLocal
|
resolveFunc := h.resolveLocal
|
||||||
listenFunc := func() (net.PacketConn, error) {
|
listenFunc := func() (net.PacketConn, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user