summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2021-11-16 23:03:20 +0100
committerQuentin Carbonneaux2021-11-16 23:03:20 +0100
commit0fdba5997702034203407b228e82fc5dd3169427 (patch)
treec58a10880a2a25a773109dccf4d14db76e170eb8
parentd0b6239c8be29b244d27cc4bb860100b0c46d316 (diff)
[mx] more error nitpicks
-rw-r--r--memex/sdar.go28
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
}