Projects STRLCPY tun2socks Commits 61a9d268
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    tunnel/udp.go
    skipped 59 lines
    60 60   wg := sync.WaitGroup{}
    61 61   wg.Add(2)
    62 62   
    63  - go func() {
    64  - defer wg.Done()
    65  - if err := copyPacketData(remote, origin, to, _udpSessionTimeout); err != nil {
    66  - log.Debugf("[UDP] copy data for origin->remote: %v", err)
    67  - }
    68  - }()
    69  - 
    70  - go func() {
    71  - defer wg.Done()
    72  - if err := copyPacketData(origin, remote, nil, _udpSessionTimeout); err != nil {
    73  - log.Debugf("[UDP] copy data for remote->origin: %v", err)
    74  - }
    75  - }()
     63 + go unidirectionalPacketStream(remote, origin, to, "origin->remote", &wg)
     64 + go unidirectionalPacketStream(origin, remote, nil, "remote->origin", &wg)
    76 65   
    77 66   wg.Wait()
     67 +}
     68 + 
     69 +func unidirectionalPacketStream(dst, src net.PacketConn, to net.Addr, dir string, wg *sync.WaitGroup) {
     70 + defer wg.Done()
     71 + if err := copyPacketData(dst, src, to, _udpSessionTimeout); err != nil {
     72 + log.Debugf("[UDP] copy data for %s: %v", dir, err)
     73 + }
    78 74  }
    79 75   
    80 76  func copyPacketData(dst, src net.PacketConn, to net.Addr, timeout time.Duration) error {
    skipped 48 lines
Please wait...
Page is in error, reload to recover