diff options
| author | Quentin Carbonneaux | 2021-11-16 23:03:20 +0100 |
|---|---|---|
| committer | Quentin Carbonneaux | 2021-11-16 23:03:20 +0100 |
| commit | 0fdba5997702034203407b228e82fc5dd3169427 (patch) | |
| tree | c58a10880a2a25a773109dccf4d14db76e170eb8 | |
| parent | d0b6239c8be29b244d27cc4bb860100b0c46d316 (diff) | |
[mx] more error nitpicks
| -rw-r--r-- | memex/sdar.go | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/memex/sdar.go b/memex/sdar.go index ac4666b..dc3a6a9 100644 --- a/memex/sdar.go +++ b/memex/sdar.go @@ -45,9 +45,9 @@ type SdarReader struct{ *SdarProcess } var SdarPath string var ( - readError = errors.New("sdar read failed") - addError = errors.New("sdar add failed") - protoError = errors.New("sdar protocol error") + readError = errors.New("read failed") + addError = errors.New("add failed") + protoError = errors.New("protocol error") ) func (a Addr) Ok() bool { @@ -282,30 +282,34 @@ func (a SdarAdder) AddBuffer(b *bytes.Buffer) (Addr, error) { return a.getAddr() } -func (r SdarReader) writeStreamTo(limit int, w io.Writer) error { +func (r SdarReader) writeStreamTo(limit int, w io.Writer, addr Addr) error { for { ans := readPkt(r.output) if len(ans) < 3 { return r.err(protoError) } + wrap := func(e error) error { + short := addr.String()[:10] + "..." + return r.err(fmt.Errorf("%w for %s", e, short)) + } switch string(ans[:3]) { default: - return r.err(protoError) + return wrap(protoError) case "err": - return r.err(readError) + return wrap(readError) case "end": return nil case "raw": if len(ans) < 4 || ans[3] != ' ' { - return r.err(protoError) + return wrap(protoError) } nb, err := strconv.Atoi(string(ans[4 : len(ans)-1])) if err != nil || (limit >= 0 && nb > limit) { - return r.err(protoError) + return wrap(protoError) } n, err := io.CopyN(w, r.output, int64(nb)) if int(n) != nb || err != nil { - return r.err(protoError) + return wrap(protoError) } if limit >= 0 { limit -= int(n) @@ -318,7 +322,7 @@ func (r SdarReader) WriteTo(addr Addr, w io.Writer) error { if err := r.sendPkt("%v", addr); err != nil { return err } - return r.writeStreamTo(-1, w) + return r.writeStreamTo(-1, w, addr) } func (r SdarReader) ReadObject(b []byte, addr Addr, off int64) (int, error) { @@ -329,7 +333,7 @@ func (r SdarReader) ReadObject(b []byte, addr Addr, off int64) (int, error) { return 0, err } buf := bytes.NewBuffer(b[:0]) - err := r.writeStreamTo(len(b), buf) + err := r.writeStreamTo(len(b), buf, addr) return buf.Len(), err } @@ -341,7 +345,7 @@ func (r SdarReader) ReadAll(addr Addr) (*bytes.Buffer, error) { return nil, err } var buf bytes.Buffer - err := r.writeStreamTo(-1, &buf) + err := r.writeStreamTo(-1, &buf, addr) return &buf, err } |
