diff options
Diffstat (limited to 'pkg/server/hook/hook.go')
| -rw-r--r-- | pkg/server/hook/hook.go | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/pkg/server/hook/hook.go b/pkg/server/hook/hook.go index 6ac51a1..3065cbe 100644 --- a/pkg/server/hook/hook.go +++ b/pkg/server/hook/hook.go @@ -10,12 +10,13 @@ import ( "tunnel/pkg/server/queue" ) -type hookInitFunc func(opts.Opts, env.Env) (hook, error) +type hookInitFunc func(opts.Opts) (hook, error) var hooks = map[string]hookInitFunc{} type Pipe struct { priv interface{} + Hook H Send Func Recv Func } @@ -67,7 +68,7 @@ func (w *wrapper) Open(env env.Env) (*Pipe, error) { return nil, err } - pipe := &Pipe{priv: it} + pipe := &Pipe{priv: it, Hook: w} if s, ok := it.(Sender); ok { pipe.Send = s.Send @@ -90,7 +91,7 @@ func (p *Pipe) Close() { } } -func New(desc string, env env.Env) (H, error) { +func New(desc string) (H, error) { name, opts := opts.Parse(desc) reverse := false @@ -101,8 +102,8 @@ func New(desc string, env env.Env) (H, error) { if f, ok := hooks[name]; !ok { return nil, fmt.Errorf("unknown hook '%s'", name) - } else if h, err := f(opts, env); err != nil { - return nil, err + } else if h, err := f(opts); err != nil { + return nil, fmt.Errorf("%s: %w", name, err) } else { w := &wrapper{ hook: h, @@ -122,7 +123,7 @@ func register(name string, f hookInitFunc) { } func registerFunc(name string, p Func) { - register(name, func(opts.Opts, env.Env) (hook, error) { + register(name, func(opts.Opts) (hook, error) { return p, nil }) } |
