1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-15 22:50:24 +08:00

fix(loop): local loopback

This commit is contained in:
源文雨
2024-07-11 23:36:09 +09:00
parent ed19a5a08e
commit 02ad99abb2
2 changed files with 5 additions and 11 deletions

View File

@@ -2,11 +2,9 @@ package link
import ( import (
"bytes" "bytes"
"errors"
"io" "io"
"net" "net"
"net/netip" "net/netip"
"os"
"runtime" "runtime"
"strconv" "strconv"
"sync" "sync"
@@ -50,19 +48,11 @@ func (m *Me) listenudp() (conn *net.UDPConn, err error) {
} }
logrus.Debugln("[listen] lock index", i) logrus.Debugln("[listen] lock index", i)
lbf := listenbuff[i*65536 : (i+1)*65536] lbf := listenbuff[i*65536 : (i+1)*65536]
err = conn.SetDeadline(time.Now().Add(time.Second))
if err != nil {
logrus.Warnln("[listen] set ddl err:", err)
}
READ:
n, addr, err := conn.ReadFromUDP(lbf) n, addr, err := conn.ReadFromUDP(lbf)
if m.loop == nil { if m.loop == nil {
logrus.Warnln("[listen] quit listening") logrus.Warnln("[listen] quit listening")
return return
} }
if errors.Is(err, os.ErrDeadlineExceeded) {
goto READ
}
if err != nil { if err != nil {
logrus.Warnln("[listen] read from udp err, reconnect:", err) logrus.Warnln("[listen] read from udp err, reconnect:", err)
conn, err = net.ListenUDP("udp", net.UDPAddrFromAddrPort(netip.MustParseAddrPort(m.udpep.String()))) conn, err = net.ListenUDP("udp", net.UDPAddrFromAddrPort(netip.MustParseAddrPort(m.udpep.String())))

View File

@@ -86,9 +86,13 @@ func NewMe(cfg *MyConfig) (m Me) {
cache: ttl.NewCache[string, *Link](time.Minute), cache: ttl.NewCache[string, *Link](time.Minute),
} }
m.router.SetDefault(nil) m.router.SetDefault(nil)
_, localp, err := net.SplitHostPort(m.EndPoint().String())
if err != nil {
panic(err)
}
m.loop = m.AddPeer(&PeerConfig{ m.loop = m.AddPeer(&PeerConfig{
PeerIP: m.me.String(), PeerIP: m.me.String(),
EndPoint: "127.0.0.1:56789", EndPoint: "127.0.0.1:" + localp,
AllowedIPs: []string{cfg.MyIPwithMask}, AllowedIPs: []string{cfg.MyIPwithMask},
NoPipe: cfg.NIC != nil, NoPipe: cfg.NIC != nil,
MTU: cfg.MTU, MTU: cfg.MTU,