|
|
@@ -27,14 +27,17 @@ func directConnection(request *protocol.TelegramRequest) error {
|
|
27
|
27
|
go directPipe(telegramConn, request.ClientConn, wg, request.Logger)
|
|
28
|
28
|
go directPipe(request.ClientConn, telegramConn, wg, request.Logger)
|
|
29
|
29
|
|
|
30
|
|
- <-request.Ctx.Done()
|
|
31
|
30
|
wg.Wait()
|
|
32
|
31
|
|
|
33
|
|
- return request.Ctx.Err()
|
|
|
32
|
+ return nil
|
|
34
|
33
|
}
|
|
35
|
34
|
|
|
36
|
|
-func directPipe(dst io.Writer, src io.Reader, wg *sync.WaitGroup, logger *zap.SugaredLogger) {
|
|
37
|
|
- defer wg.Done()
|
|
|
35
|
+func directPipe(dst io.WriteCloser, src io.ReadCloser, wg *sync.WaitGroup, logger *zap.SugaredLogger) {
|
|
|
36
|
+ defer func() {
|
|
|
37
|
+ dst.Close()
|
|
|
38
|
+ src.Close()
|
|
|
39
|
+ wg.Done()
|
|
|
40
|
+ }()
|
|
38
|
41
|
|
|
39
|
42
|
buf := make([]byte, directPipeBufferSize)
|
|
40
|
43
|
if _, err := io.CopyBuffer(dst, src, buf); err != nil {
|