diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-29 21:50:58 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-29 23:48:53 +0300 |
| commit | 8b7283ad01a8dde92cf708f81f6c1105647bafd7 (patch) | |
| tree | 6598c17258bacb4e84f6e486e591460437e93086 /pkg/server/hook/tee.go | |
| parent | 7ab641d239e502e09c6f05dfc7efd069fcf3c314 (diff) | |
close pipes at end of stream
Diffstat (limited to 'pkg/server/hook/tee.go')
| -rw-r--r-- | pkg/server/hook/tee.go | 20 |
1 files changed, 5 insertions, 15 deletions
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 } |
