Projects STRLCPY tun2socks Commits ad522ebb
🤬
  • ■ ■ ■ ■ ■ ■
    tunnel/tcp.go
    skipped 21 lines
    22 22   _tcpWaitTimeout = t
    23 23  }
    24 24   
    25  -func handleTCPConn(localConn adapter.TCPConn) {
    26  - defer localConn.Close()
     25 +func handleTCPConn(originConn adapter.TCPConn) {
     26 + defer originConn.Close()
    27 27   
    28  - id := localConn.ID()
     28 + id := originConn.ID()
    29 29   metadata := &M.Metadata{
    30 30   Network: M.TCP,
    31 31   SrcIP: net.IP(id.RemoteAddress),
    skipped 2 lines
    34 34   DstPort: id.LocalPort,
    35 35   }
    36 36   
    37  - targetConn, err := proxy.Dial(metadata)
     37 + remoteConn, err := proxy.Dial(metadata)
    38 38   if err != nil {
    39 39   log.Warnf("[TCP] dial %s: %v", metadata.DestinationAddress(), err)
    40 40   return
    41 41   }
    42  - metadata.MidIP, metadata.MidPort = parseAddr(targetConn.LocalAddr())
     42 + metadata.MidIP, metadata.MidPort = parseAddr(remoteConn.LocalAddr())
    43 43   
    44  - targetConn = statistic.DefaultTCPTracker(targetConn, metadata)
    45  - defer targetConn.Close()
     44 + remoteConn = statistic.DefaultTCPTracker(remoteConn, metadata)
     45 + defer remoteConn.Close()
    46 46   
    47 47   log.Infof("[TCP] %s <-> %s", metadata.SourceAddress(), metadata.DestinationAddress())
    48  - if err = relay(localConn, targetConn); err != nil {
     48 + if err = pipe(originConn, remoteConn); err != nil {
    49 49   log.Debugf("[TCP] %s <-> %s: %v", metadata.SourceAddress(), metadata.DestinationAddress(), err)
    50 50   }
    51 51  }
    52 52   
    53  -// relay copies between left and right bidirectionally.
    54  -func relay(left, right net.Conn) error {
     53 +// pipe copies copy data to & from provided net.Conn(s) bidirectionally.
     54 +func pipe(origin, remote net.Conn) error {
    55 55   wg := sync.WaitGroup{}
    56 56   wg.Add(2)
    57 57   
    skipped 1 lines
    59 59   
    60 60   go func() {
    61 61   defer wg.Done()
    62  - if err := copyBuffer(right, left); err != nil {
     62 + if err := copyBuffer(remote, origin); err != nil {
    63 63   leftErr = errors.Join(leftErr, err)
    64 64   }
    65  - right.SetReadDeadline(time.Now().Add(_tcpWaitTimeout))
     65 + remote.SetReadDeadline(time.Now().Add(_tcpWaitTimeout))
    66 66   }()
    67 67   
    68 68   go func() {
    69 69   defer wg.Done()
    70  - if err := copyBuffer(left, right); err != nil {
     70 + if err := copyBuffer(origin, remote); err != nil {
    71 71   rightErr = errors.Join(rightErr, err)
    72 72   }
    73  - left.SetReadDeadline(time.Now().Add(_tcpWaitTimeout))
     73 + origin.SetReadDeadline(time.Now().Add(_tcpWaitTimeout))
    74 74   }()
    75 75   
    76 76   wg.Wait()
    skipped 11 lines
  • ■ ■ ■ ■ ■ ■
    tunnel/udp.go
    skipped 53 lines
    54 54   pc = newSymmetricNATPacketConn(pc, metadata)
    55 55   
    56 56   log.Infof("[UDP] %s <-> %s", metadata.SourceAddress(), metadata.DestinationAddress())
    57  - if err = relayPacket(uc, pc, remote); err != nil {
     57 + if err = pipePacket(uc, pc, remote); err != nil {
    58 58   log.Debugf("[UDP] %s <-> %s: %v", metadata.SourceAddress(), metadata.DestinationAddress(), err)
    59 59   }
    60 60  }
    61 61   
    62  -func relayPacket(left net.PacketConn, right net.PacketConn, to net.Addr) error {
     62 +func pipePacket(origin net.PacketConn, remote net.PacketConn, to net.Addr) error {
    63 63   wg := sync.WaitGroup{}
    64 64   wg.Add(2)
    65 65   
    skipped 1 lines
    67 67   
    68 68   go func() {
    69 69   defer wg.Done()
    70  - if err := copyPacketBuffer(right, left, to, _udpSessionTimeout); err != nil {
     70 + if err := copyPacketData(remote, origin, to, _udpSessionTimeout); err != nil {
    71 71   leftErr = errors.Join(leftErr, err)
    72 72   }
    73 73   }()
    74 74   
    75 75   go func() {
    76 76   defer wg.Done()
    77  - if err := copyPacketBuffer(left, right, nil, _udpSessionTimeout); err != nil {
     77 + if err := copyPacketData(origin, remote, nil, _udpSessionTimeout); err != nil {
    78 78   rightErr = errors.Join(rightErr, err)
    79 79   }
    80 80   }()
    skipped 2 lines
    83 83   return errors.Join(leftErr, rightErr)
    84 84  }
    85 85   
    86  -func copyPacketBuffer(dst net.PacketConn, src net.PacketConn, to net.Addr, timeout time.Duration) error {
     86 +func copyPacketData(dst net.PacketConn, src net.PacketConn, to net.Addr, timeout time.Duration) error {
    87 87   buf := pool.Get(pool.MaxSegmentSize)
    88 88   defer pool.Put(buf)
    89 89   
    skipped 45 lines
Please wait...
Page is in error, reload to recover