Skip to content

Commit e92f559

Browse files
authored
Merge pull request #14 from huboh/master
fix: stop goroutine leaks by ensuring both goroutines exit properly
2 parents a0bbd7a + 0b4b895 commit e92f559

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

debug.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func (writer DebugWriter) Write(data []byte) (n int, err error) {
2424
}
2525

2626
func debugJunction(destConn net.Conn, clientConn net.Conn) {
27-
chDone := make(chan bool)
27+
chDone := make(chan bool, 2)
2828

2929
go func() {
3030
defer func() {
@@ -60,5 +60,7 @@ func debugJunction(destConn net.Conn, clientConn net.Conn) {
6060
}
6161
}()
6262

63+
// wait for both copy ops to complete
64+
<-chDone
6365
<-chDone
6466
}

proxy.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func connect(sni string, destConn net.Conn, clientConn net.Conn) {
120120
}
121121

122122
func junction(destConn net.Conn, clientConn net.Conn) {
123-
chDone := make(chan bool)
123+
chDone := make(chan bool, 2)
124124

125125
go func() {
126126
_, err := io.Copy(destConn, clientConn)
@@ -138,6 +138,8 @@ func junction(destConn net.Conn, clientConn net.Conn) {
138138
chDone <- true
139139
}()
140140

141+
// wait for both copy ops to complete
142+
<-chDone
141143
<-chDone
142144
}
143145

0 commit comments

Comments
 (0)