lib9p

Go 9P library.
Log | Files | Refs

commit 2f236b7cd42eb89e5f4b0bb66c1500f644a41a24
parent 721e0e2e784176a94be5f2e39fdfc67484a15354
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sat, 15 Jul 2023 14:55:00 +0900

add auth

Diffstat:
Mserver.go | 44++++++++++++++++++++++++++++++--------------
1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/server.go b/server.go @@ -86,19 +86,28 @@ func sAuth(s *Srv, r *Req) { respond(r, fmt.Errorf("authentication not implemented")) } -func rAuth(r *Req, err error) {} +func rAuth(r *Req, err error) { + if err != nil { + size := uint32(4 + 1 + 2 + 2 + len(err.Error())) + ofcall := RError(make([]byte, size)) + ofcall.SetSize(size) + ofcall.SetType(Rerror) + ofcall.SetEName(err) + r.ofcall = ofcall + } +} func sAttach(s *Srv, r *Req) { - + respond(r, nil) } +func rAttach(r *Req, err error) {} + func rError(r *Req, err error) { size := uint32(4 + 1 + 2 + 2 + len(err.Error())) ofcall := RError(make([]byte, size)) - ofcall.SetSize(size) ofcall.SetType(Rerror) - ofcall.SetTag(r.ifcall.Tag()) ofcall.SetEName(err) r.ofcall = ofcall } @@ -117,22 +126,29 @@ func Serve(s *Srv) { sVersion(s, r) case TAuth: sAuth(s, r) + case TAttach: + sAttach(s, r) } } } func respond(r *Req, err error) { - if err != nil { - rError(r, err) - } else { - switch ofcall := r.ofcall.(type) { - default: - rError(r, fmt.Errorf("unknown message type: %s", ofcall.Type())) - case RVersion: - rVersion(r, err) - case RAuth: - rAuth(r, err) + switch r.ofcall.(type) { + default: + if r.ofcall == nil { + if err == nil { + panic("neither ofcall nor err is set.") + } + rError(r, err) + } else { + rError(r, fmt.Errorf("unknown message type: %s", r.ofcall.Type())) } + case RVersion: + rVersion(r, err) + case RAuth: + rAuth(r, err) + case RAttach: + rAttach(r, err) } if chatty9P {