update
This commit is contained in:
parent
2f40158945
commit
572a6059bb
@ -141,6 +141,10 @@ func (n *NetForward) runTCP() error {
|
|||||||
}
|
}
|
||||||
log := starlog.Std.NewFlag()
|
log := starlog.Std.NewFlag()
|
||||||
log.Infof("Accept New TCP Conn from %v\n", conn.RemoteAddr().String())
|
log.Infof("Accept New TCP Conn from %v\n", conn.RemoteAddr().String())
|
||||||
|
if n.DelayMilSec > 0 && (n.DelayToward == 0 || n.DelayToward == 1) {
|
||||||
|
log.Infof("Delay %d ms\n", n.DelayMilSec)
|
||||||
|
time.Sleep(time.Millisecond * time.Duration(n.DelayMilSec))
|
||||||
|
}
|
||||||
go func(conn net.Conn) {
|
go func(conn net.Conn) {
|
||||||
rmt, err := net.DialTimeout("tcp", n.RemoteURI, n.DialTimeout)
|
rmt, err := net.DialTimeout("tcp", n.RemoteURI, n.DialTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -283,42 +287,42 @@ func (n *NetForward) copy(dst, src net.Conn) {
|
|||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
bufsize := make([]byte, 32*1024)
|
bufsize := make([]byte, 32*1024)
|
||||||
for {
|
for {
|
||||||
|
count, err := src.Read(bufsize)
|
||||||
|
if err != nil {
|
||||||
|
dst.Close()
|
||||||
|
src.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = dst.Write(bufsize[:count])
|
||||||
|
if err != nil {
|
||||||
|
src.Close()
|
||||||
|
dst.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
if n.DelayMilSec > 0 && (n.DelayToward == 0 || n.DelayToward == 1) {
|
if n.DelayMilSec > 0 && (n.DelayToward == 0 || n.DelayToward == 1) {
|
||||||
time.Sleep(time.Millisecond * time.Duration(n.DelayMilSec))
|
time.Sleep(time.Millisecond * time.Duration(n.DelayMilSec))
|
||||||
}
|
}
|
||||||
n, err := src.Read(bufsize)
|
|
||||||
if err != nil {
|
|
||||||
dst.Close()
|
|
||||||
src.Close()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
_, err = dst.Write(bufsize[:n])
|
|
||||||
if err != nil {
|
|
||||||
src.Close()
|
|
||||||
dst.Close()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
bufsize := make([]byte, 32*1024)
|
bufsize := make([]byte, 32*1024)
|
||||||
for {
|
for {
|
||||||
|
count, err := dst.Read(bufsize)
|
||||||
|
if err != nil {
|
||||||
|
src.Close()
|
||||||
|
dst.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = src.Write(bufsize[:count])
|
||||||
|
if err != nil {
|
||||||
|
src.Close()
|
||||||
|
dst.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
if n.DelayMilSec > 0 && (n.DelayToward == 0 || n.DelayToward == 2) {
|
if n.DelayMilSec > 0 && (n.DelayToward == 0 || n.DelayToward == 2) {
|
||||||
time.Sleep(time.Millisecond * time.Duration(n.DelayMilSec))
|
time.Sleep(time.Millisecond * time.Duration(n.DelayMilSec))
|
||||||
}
|
}
|
||||||
n, err := dst.Read(bufsize)
|
|
||||||
if err != nil {
|
|
||||||
src.Close()
|
|
||||||
dst.Close()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
_, err = src.Write(bufsize[:n])
|
|
||||||
if err != nil {
|
|
||||||
src.Close()
|
|
||||||
dst.Close()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user