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 {
+8 -5
View File
@@ -32,17 +32,20 @@ func middleConnection(request *protocol.TelegramRequest) error {
go middlePipe(telegramConn, clientConn, wg, request.Logger)
go middlePipe(clientConn, telegramConn, wg, request.Logger)
<-request.Ctx.Done()
wg.Wait()
return request.Ctx.Err()
return nil
}
func middlePipe(dst conntypes.PacketAckWriter,
src conntypes.PacketAckReader,
func middlePipe(dst conntypes.PacketAckWriteCloser,
src conntypes.PacketAckReadCloser,
wg *sync.WaitGroup,
logger *zap.SugaredLogger) {
defer wg.Done()
defer func() {
dst.Close()
src.Close()
wg.Done()
}()
for {
acks := conntypes.ConnectionAcks{}