From 99821dc2fbe41cf0734f888336f03bc711ce61de Mon Sep 17 00:00:00 2001 From: v2ray Date: Tue, 16 Aug 2016 17:00:04 +0200 Subject: [PATCH] change to wait group --- proxy/dokodemo/dokodemo.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/proxy/dokodemo/dokodemo.go b/proxy/dokodemo/dokodemo.go index 25003aa85..054f2490f 100644 --- a/proxy/dokodemo/dokodemo.go +++ b/proxy/dokodemo/dokodemo.go @@ -165,32 +165,31 @@ func (this *DokodemoDoor) HandleTCPConnection(conn internet.Connection) { }) defer ray.InboundOutput().Release() - var inputFinish, outputFinish sync.Mutex - inputFinish.Lock() - outputFinish.Lock() + var wg sync.WaitGroup reader := v2net.NewTimeOutReader(this.config.Timeout, conn) defer reader.Release() + wg.Add(1) go func() { v2reader := v2io.NewAdaptiveReader(reader) defer v2reader.Release() v2io.Pipe(v2reader, ray.InboundInput()) - inputFinish.Unlock() + wg.Done() ray.InboundInput().Close() }() + wg.Add(1) go func() { v2writer := v2io.NewAdaptiveWriter(conn) defer v2writer.Release() v2io.Pipe(ray.InboundOutput(), v2writer) - outputFinish.Unlock() + wg.Done() }() - outputFinish.Lock() - inputFinish.Lock() + wg.Wait() } type Factory struct{}