don't resolve server addr for tun handler

This commit is contained in:
ginuerzh 2022-11-25 18:14:47 +08:00
parent 54ab717f6b
commit bcfff22669
2 changed files with 4 additions and 13 deletions

View File

@ -24,7 +24,7 @@ var (
magicHeader = []byte("GOST")
)
func (h *tunHandler) handleClient(ctx context.Context, conn net.Conn, addr net.Addr, config *tun_util.Config, log logger.Logger) error {
func (h *tunHandler) handleClient(ctx context.Context, conn net.Conn, raddr string, config *tun_util.Config, log logger.Logger) error {
ip, _, err := net.ParseCIDR(config.Net)
if err != nil {
return err
@ -32,7 +32,7 @@ func (h *tunHandler) handleClient(ctx context.Context, conn net.Conn, addr net.A
for {
err := func() error {
cc, err := h.router.Dial(ctx, addr.Network(), addr.String())
cc, err := h.router.Dial(ctx, "udp", raddr)
if err != nil {
return err
}

View File

@ -87,26 +87,17 @@ func (h *tunHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler.
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
}()
network := "udp"
var raddr net.Addr
var err error
var target *chain.Node
if h.hop != nil {
target = h.hop.Select(ctx)
}
if target != nil {
raddr, err = net.ResolveUDPAddr(network, target.Addr)
if err != nil {
log.Error(err)
return err
}
log = log.WithFields(map[string]any{
"dst": fmt.Sprintf("%s/%s", raddr.String(), raddr.Network()),
"dst": fmt.Sprintf("%s/%s", target.Addr, "udp"),
})
log.Debugf("%s >> %s", conn.RemoteAddr(), target.Addr)
if err := h.handleClient(ctx, conn, raddr, config, log); err != nil {
if err := h.handleClient(ctx, conn, target.Addr, config, log); err != nil {
log.Error(err)
}
return nil