uottun: serve in goroutine

This commit is contained in:
nadoo 2018-01-20 15:23:56 +08:00
parent 38de018d91
commit 47820cccba
2 changed files with 11 additions and 9 deletions

2
ss.go
View File

@ -178,7 +178,7 @@ func (s *SS) ListenAndServeUDP() {
nm.Store(raddr.String(), pc) nm.Store(raddr.String(), pc)
go func() { go func() {
timedCopy(c, raddr, pc, 1*time.Minute) timedCopy(c, raddr, pc, 2*time.Minute)
pc.Close() pc.Close()
nm.Delete(raddr.String()) nm.Delete(raddr.String())
}() }()

View File

@ -53,21 +53,23 @@ func (s *UoTTun) ListenAndServe() {
rc.Write(buf[:n]) rc.Write(buf[:n])
go func() {
// no remote forwarder, just a local udp forwarder // no remote forwarder, just a local udp forwarder
if urc, ok := rc.(*net.UDPConn); ok { if urc, ok := rc.(*net.UDPConn); ok {
go func() { timedCopy(c, clientAddr, urc, 2*time.Minute)
timedCopy(c, clientAddr, urc, 5*time.Minute)
urc.Close() urc.Close()
}() return
} else { // remote forwarder, udp over tcp }
// remote forwarder, udp over tcp
resp, err := ioutil.ReadAll(rc) resp, err := ioutil.ReadAll(rc)
if err != nil { if err != nil {
logf("error in ioutil.ReadAll: %s\n", err) logf("error in ioutil.ReadAll: %s\n", err)
continue return
} }
rc.Close() rc.Close()
c.WriteTo(resp, clientAddr) c.WriteTo(resp, clientAddr)
} }()
logf("proxy-uottun %s <-> %s", clientAddr, s.raddr) logf("proxy-uottun %s <-> %s", clientAddr, s.raddr)
} }