don't resolve server addr for tun handler
This commit is contained in:
parent
54ab717f6b
commit
bcfff22669
@ -24,7 +24,7 @@ var (
|
|||||||
magicHeader = []byte("GOST")
|
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)
|
ip, _, err := net.ParseCIDR(config.Net)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -32,7 +32,7 @@ func (h *tunHandler) handleClient(ctx context.Context, conn net.Conn, addr net.A
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
err := func() error {
|
err := func() error {
|
||||||
cc, err := h.router.Dial(ctx, addr.Network(), addr.String())
|
cc, err := h.router.Dial(ctx, "udp", raddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -87,26 +87,17 @@ func (h *tunHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler.
|
|||||||
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
|
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
|
||||||
}()
|
}()
|
||||||
|
|
||||||
network := "udp"
|
|
||||||
var raddr net.Addr
|
|
||||||
var err error
|
|
||||||
|
|
||||||
var target *chain.Node
|
var target *chain.Node
|
||||||
if h.hop != nil {
|
if h.hop != nil {
|
||||||
target = h.hop.Select(ctx)
|
target = h.hop.Select(ctx)
|
||||||
}
|
}
|
||||||
if target != nil {
|
if target != nil {
|
||||||
raddr, err = net.ResolveUDPAddr(network, target.Addr)
|
|
||||||
if err != nil {
|
|
||||||
log.Error(err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
log = log.WithFields(map[string]any{
|
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)
|
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)
|
log.Error(err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user