diff options
Diffstat (limited to 'pkg/server/module/auth.go')
| -rw-r--r-- | pkg/server/module/auth.go | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/pkg/server/module/auth.go b/pkg/server/module/auth.go index d269bf6..de58e82 100644 --- a/pkg/server/module/auth.go +++ b/pkg/server/module/auth.go @@ -47,12 +47,6 @@ func (a *auth) generateChallenge() error { return nil } -func (a *auth) sendChallenge(q queue.Q) bool { - enc := netstring.NewEncoder(q.Writer()) - enc.Encode(a.challenge.self) - return a.wait(a.recvChallenge) -} - func (a *auth) getHash(c string) string { h := md5.New() @@ -62,13 +56,7 @@ func (a *auth) getHash(c string) string { return string(h.Sum(nil)) } -func (a *auth) sendHash(q queue.Q) bool { - enc := netstring.NewEncoder(q.Writer()) - enc.Encode(a.getHash(a.challenge.peer)) - return a.wait(a.recvHash) -} - -func (a *auth) wait(c chan struct{}) bool { +func (a *auth) isReady(c chan struct{}) bool { select { case <-a.fail: return false @@ -78,11 +66,15 @@ func (a *auth) wait(c chan struct{}) bool { } func (a *auth) Send(rq, wq queue.Q) error { + e := netstring.NewEncoder(wq.Writer()) + if err := a.generateChallenge(); err != nil { return err } - if !a.sendChallenge(wq) { + e.Encode(a.challenge.self) + + if !a.isReady(a.recvChallenge) { return nil } @@ -90,7 +82,9 @@ func (a *auth) Send(rq, wq queue.Q) error { return errDupChallenge } - if !a.sendHash(wq) { + e.Encode(a.getHash(a.challenge.peer)) + + if !a.isReady(a.recvHash) { return nil } @@ -122,7 +116,7 @@ func (a *auth) Recv(rq, wq queue.Q) (err error) { close(a.recvHash) - if !a.wait(a.ok) { + if !a.isReady(a.ok) { return nil } @@ -141,7 +135,7 @@ func getAuthSecret(env env.Env) string { return env.Get("secret") } -func (m authModule) Open(env env.Env) (Pipe, Pipe) { +func (m authModule) Open(env env.Env) (interface{}, error) { a := &auth{ secret: getAuthSecret(env), recvChallenge: make(chan struct{}), @@ -149,7 +143,7 @@ func (m authModule) Open(env env.Env) (Pipe, Pipe) { fail: make(chan struct{}), ok: make(chan struct{}), } - return a.Send, a.Recv + return a, nil } func init() { |
