Refactor(tunnel): using parseAddr

This commit is contained in:
xjasonlyu
2021-07-19 14:04:17 +08:00
parent e77c12156a
commit ccc35c3c1b
4 changed files with 22 additions and 17 deletions

View File

@@ -3,7 +3,6 @@ package tunnel
import ( import (
"io" "io"
"net" "net"
"strconv"
"sync" "sync"
"time" "time"
@@ -45,10 +44,7 @@ func handleTCP(localConn core.TCPConn) {
metadata.MidIP = dialerAddr.IP metadata.MidIP = dialerAddr.IP
metadata.MidPort = uint16(dialerAddr.Port) metadata.MidPort = uint16(dialerAddr.Port)
} else { /* fallback */ } else { /* fallback */
ip, p, _ := net.SplitHostPort(targetConn.LocalAddr().String()) metadata.MidIP, metadata.MidPort = parseAddr(targetConn.LocalAddr().String())
port, _ := strconv.ParseUint(p, 10, 16)
metadata.MidIP = net.ParseIP(ip)
metadata.MidPort = uint16(port)
} }
targetConn = newTCPTracker(targetConn, metadata) targetConn = newTCPTracker(targetConn, metadata)

View File

@@ -39,13 +39,6 @@ func AddPacket(packet core.UDPPacket) {
} }
} }
func max(a, b int) int {
if a > b {
return a
}
return b
}
func process() { func process() {
for i := 0; i < _numUDPWorkers; i++ { for i := 0; i < _numUDPWorkers; i++ {
queue := _udpQueue queue := _udpQueue

View File

@@ -4,7 +4,6 @@ import (
"errors" "errors"
"net" "net"
"os" "os"
"strconv"
"time" "time"
"github.com/xjasonlyu/tun2socks/common/pool" "github.com/xjasonlyu/tun2socks/common/pool"
@@ -88,10 +87,7 @@ func handleUDP(packet core.UDPPacket) {
metadata.MidIP = dialerAddr.IP metadata.MidIP = dialerAddr.IP
metadata.MidPort = uint16(dialerAddr.Port) metadata.MidPort = uint16(dialerAddr.Port)
} else { /* fallback */ } else { /* fallback */
ip, p, _ := net.SplitHostPort(pc.LocalAddr().String()) metadata.MidIP, metadata.MidPort = parseAddr(pc.LocalAddr().String())
port, _ := strconv.ParseUint(p, 10, 16)
metadata.MidIP = net.ParseIP(ip)
metadata.MidPort = uint16(port)
} }
pc = newUDPTracker(pc, metadata) pc = newUDPTracker(pc, metadata)

20
tunnel/util.go Normal file
View File

@@ -0,0 +1,20 @@
package tunnel
import (
"net"
"strconv"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
// parseAddr parses address to IP and port.
func parseAddr(addr string) (net.IP, uint16) {
host, portStr, _ := net.SplitHostPort(addr)
portInt, _ := strconv.ParseUint(portStr, 10, 16)
return net.ParseIP(host), uint16(portInt)
}