mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 16:54:02 +03:00
Merge pull request #189 from 9seconds/relay-close-racecondition
Fix race condition in closing a relay
This commit is contained in:
@@ -68,11 +68,12 @@ func (r *Relay) Process(eastConn, westConn io.ReadWriteCloser) error {
|
||||
|
||||
func (r *Relay) transmit(src io.ReadCloser, dst io.WriteCloser,
|
||||
buffer []byte, direction string, wg *sync.WaitGroup) {
|
||||
defer wg.Done()
|
||||
|
||||
defer func() {
|
||||
r.ctxCancel()
|
||||
src.Close()
|
||||
dst.Close()
|
||||
wg.Done()
|
||||
r.ctxCancel()
|
||||
}()
|
||||
|
||||
if _, err := io.CopyBuffer(dst, src, buffer); err != nil {
|
||||
@@ -92,6 +93,8 @@ func (r *Relay) transmit(src io.ReadCloser, dst io.WriteCloser,
|
||||
}
|
||||
|
||||
func (r *Relay) runObserver(one, another io.Closer, wg *sync.WaitGroup) {
|
||||
defer wg.Done()
|
||||
|
||||
ticker := time.NewTicker(time.Second)
|
||||
|
||||
defer func() {
|
||||
@@ -104,8 +107,6 @@ func (r *Relay) runObserver(one, another io.Closer, wg *sync.WaitGroup) {
|
||||
case <-ticker.C:
|
||||
default:
|
||||
}
|
||||
|
||||
wg.Done()
|
||||
}()
|
||||
|
||||
lastTickAt := time.Now()
|
||||
|
||||
Reference in New Issue
Block a user