Correct closing of connections

This commit is contained in:
9seconds
2019-10-10 21:07:55 +03:00
parent d10729490d
commit 56cf90b13d
3 changed files with 16 additions and 9 deletions
+7 -4
View File
@@ -27,14 +27,17 @@ func directConnection(request *protocol.TelegramRequest) error {
go directPipe(telegramConn, request.ClientConn, wg, request.Logger)
go directPipe(request.ClientConn, telegramConn, wg, request.Logger)
<-request.Ctx.Done()
wg.Wait()
return request.Ctx.Err()
return nil
}
func directPipe(dst io.Writer, src io.Reader, wg *sync.WaitGroup, logger *zap.SugaredLogger) {
defer wg.Done()
func directPipe(dst io.WriteCloser, src io.ReadCloser, wg *sync.WaitGroup, logger *zap.SugaredLogger) {
defer func() {
dst.Close()
src.Close()
wg.Done()
}()
buf := make([]byte, directPipeBufferSize)
if _, err := io.CopyBuffer(dst, src, buf); err != nil {