From 8b7283ad01a8dde92cf708f81f6c1105647bafd7 Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Sat, 29 Feb 2020 21:50:58 +0300 Subject: close pipes at end of stream --- pkg/server/hook/tee.go | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) (limited to 'pkg/server/hook/tee.go') diff --git a/pkg/server/hook/tee.go b/pkg/server/hook/tee.go index fd30a81..521164b 100644 --- a/pkg/server/hook/tee.go +++ b/pkg/server/hook/tee.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "path" - "sync" "tunnel/pkg/server/env" "tunnel/pkg/server/opts" "tunnel/pkg/server/queue" @@ -15,9 +14,7 @@ import ( const teeDefaultFile = "/tmp/tunnel/dump" type tee struct { - f *os.File - mu sync.Mutex - wg sync.WaitGroup + f *os.File } type teeHook struct { @@ -41,8 +38,6 @@ func (t *tee) dump(s string, p []byte) error { } func (t *tee) Send(rq, wq queue.Q) error { - defer t.wg.Done() - for b := range rq { t.dump(">", b) wq <- b @@ -52,8 +47,6 @@ func (t *tee) Send(rq, wq queue.Q) error { } func (t *tee) Recv(rq, wq queue.Q) error { - defer t.wg.Done() - for b := range rq { t.dump("<", b) wq <- b @@ -62,6 +55,10 @@ func (t *tee) Recv(rq, wq queue.Q) error { return nil } +func (t *tee) Close() { + t.f.Close() +} + func (h *teeHook) where(env env.Env) string { if h.file != "" { return h.file @@ -93,13 +90,6 @@ func (h *teeHook) Open(env env.Env) (interface{}, error) { t.f = f } - t.wg.Add(2) - - go func() { - t.wg.Wait() - t.f.Close() - }() - return &t, nil } -- cgit v1.2.3-70-g09d2