adjust bi-tun parameters

This commit is contained in:
xtaci
2019-05-11 18:13:48 +08:00
parent 5da363682e
commit dbaefc35a7
2 changed files with 36 additions and 30 deletions
+18 -16
View File
@@ -34,33 +34,35 @@ func handleClient(sess *smux.Session, p1 io.ReadWriteCloser, quiet bool) {
log.Println(v...)
}
}
defer p1.Close()
p2, err := sess.OpenStream()
if err != nil {
logln(err)
p1.Close()
return
}
defer p2.Close()
logln("stream opened", p2.ID())
defer logln("stream closed", p2.ID())
var wg sync.WaitGroup
wg.Add(2)
// start tunnel & wait for tunnel termination
streamCopy := func(dst io.Writer, src io.ReadCloser) {
buf := xmitBuf.Get().([]byte)
if _, err := generic.CopyBuffer(dst, src, buf); err != nil {
logln(err)
}
xmitBuf.Put(buf)
src.Close()
wg.Done()
streamCopy := func(dst io.Writer, src io.ReadCloser) chan struct{} {
die := make(chan struct{})
go func() {
buf := xmitBuf.Get().([]byte)
if _, err := generic.CopyBuffer(dst, src, buf); err != nil {
logln(err)
}
xmitBuf.Put(buf)
}()
return die
}
go streamCopy(p1, p2)
go streamCopy(p2, p1)
wg.Wait()
select {
case <-streamCopy(p1, p2):
case <-streamCopy(p2, p1):
}
}
func checkError(err error) {
@@ -77,7 +79,7 @@ func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
}
xmitBuf.New = func() interface{} {
return make([]byte, 65535)
return make([]byte, 32768)
}
myApp := cli.NewApp()
+18 -14
View File
@@ -68,25 +68,29 @@ func handleClient(p1 *smux.Stream, p2 io.ReadWriteCloser, quiet bool) {
}
}
defer p1.Close()
defer p2.Close()
logln("stream opened", p1.ID())
defer logln("stream closed", p1.ID())
var wg sync.WaitGroup
wg.Add(2)
// start tunnel & wait for tunnel termination
streamCopy := func(dst io.Writer, src io.ReadCloser) {
buf := xmitBuf.Get().([]byte)
if _, err := generic.CopyBuffer(dst, src, buf); err != nil {
logln(err)
}
xmitBuf.Put(buf)
src.Close()
wg.Done()
streamCopy := func(dst io.Writer, src io.ReadCloser) chan struct{} {
die := make(chan struct{})
go func() {
buf := xmitBuf.Get().([]byte)
if _, err := generic.CopyBuffer(dst, src, buf); err != nil {
logln(err)
}
xmitBuf.Put(buf)
}()
return die
}
go streamCopy(p1, p2)
go streamCopy(p2, p1)
wg.Wait()
select {
case <-streamCopy(p1, p2):
case <-streamCopy(p2, p1):
}
}
func checkError(err error) {
@@ -103,7 +107,7 @@ func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
}
xmitBuf.New = func() interface{} {
return make([]byte, 65535)
return make([]byte, 32768)
}
myApp := cli.NewApp()