Projects STRLCPY tun2socks Commits 4cc02c82
🤬
  • ■ ■ ■ ■ ■ ■
    tunnel/udp.go
    1 1  package tunnel
    2 2   
    3 3  import (
    4  - "errors"
    5 4   "io"
    6 5   "net"
    7 6   "sync"
    skipped 46 lines
    54 53   pc = newSymmetricNATPacketConn(pc, metadata)
    55 54   
    56 55   log.Infof("[UDP] %s <-> %s", metadata.SourceAddress(), metadata.DestinationAddress())
    57  - if err = pipePacket(uc, pc, remote); err != nil {
    58  - log.Debugf("[UDP] %s <-> %s: %v", metadata.SourceAddress(), metadata.DestinationAddress(), err)
    59  - }
     56 + pipePacket(uc, pc, remote)
    60 57  }
    61 58   
    62  -func pipePacket(origin net.PacketConn, remote net.PacketConn, to net.Addr) error {
     59 +func pipePacket(origin, remote net.PacketConn, to net.Addr) {
    63 60   wg := sync.WaitGroup{}
    64 61   wg.Add(2)
    65  - 
    66  - var leftErr, rightErr error
    67 62   
    68 63   go func() {
    69 64   defer wg.Done()
    70 65   if err := copyPacketData(remote, origin, to, _udpSessionTimeout); err != nil {
    71  - leftErr = errors.Join(leftErr, err)
     66 + log.Debugf("[UDP] copy data for origin->remote: %v", err)
    72 67   }
    73 68   }()
    74 69   
    75 70   go func() {
    76 71   defer wg.Done()
    77 72   if err := copyPacketData(origin, remote, nil, _udpSessionTimeout); err != nil {
    78  - rightErr = errors.Join(rightErr, err)
     73 + log.Debugf("[UDP] copy data for remote->origin: %v", err)
    79 74   }
    80 75   }()
    81 76   
    82 77   wg.Wait()
    83  - return errors.Join(leftErr, rightErr)
    84 78  }
    85 79   
    86  -func copyPacketData(dst net.PacketConn, src net.PacketConn, to net.Addr, timeout time.Duration) error {
     80 +func copyPacketData(dst, src net.PacketConn, to net.Addr, timeout time.Duration) error {
    87 81   buf := pool.Get(pool.MaxSegmentSize)
    88 82   defer pool.Put(buf)
    89 83   
    skipped 45 lines
Please wait...
Page is in error, reload to recover