|
@@ -119,6 +119,7 @@ func (b *bridge) serveListen() {
|
|
|
b.mu.Unlock()
|
|
b.mu.Unlock()
|
|
|
select {
|
|
select {
|
|
|
case <-b.stopc:
|
|
case <-b.stopc:
|
|
|
|
|
+ inc.Close()
|
|
|
return
|
|
return
|
|
|
case <-pausec:
|
|
case <-pausec:
|
|
|
}
|
|
}
|
|
@@ -152,10 +153,12 @@ func (b *bridge) serveConn(bc *bridgeConn) {
|
|
|
wg.Add(2)
|
|
wg.Add(2)
|
|
|
go func() {
|
|
go func() {
|
|
|
io.Copy(bc.out, bc.in)
|
|
io.Copy(bc.out, bc.in)
|
|
|
|
|
+ bc.close()
|
|
|
wg.Done()
|
|
wg.Done()
|
|
|
}()
|
|
}()
|
|
|
go func() {
|
|
go func() {
|
|
|
io.Copy(bc.in, bc.out)
|
|
io.Copy(bc.in, bc.out)
|
|
|
|
|
+ bc.close()
|
|
|
wg.Done()
|
|
wg.Done()
|
|
|
}()
|
|
}()
|
|
|
wg.Wait()
|
|
wg.Wait()
|
|
@@ -168,7 +171,11 @@ type bridgeConn struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (bc *bridgeConn) Close() {
|
|
func (bc *bridgeConn) Close() {
|
|
|
|
|
+ bc.close()
|
|
|
|
|
+ <-bc.donec
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (bc *bridgeConn) close() {
|
|
|
bc.in.Close()
|
|
bc.in.Close()
|
|
|
bc.out.Close()
|
|
bc.out.Close()
|
|
|
- <-bc.donec
|
|
|
|
|
}
|
|
}
|