fix: return results from resolve once
Previously, we'd return the error + result, then the result.
Steven Allen committed
Jun 17, 2020 at 19:50 UTC
0f3bc6552f6a09bddf369e67393a95b546159136
1 file changed
+5
-10
namesys/namesys.go
+5
-10
@@ -123,15 +123,12 @@ func (ns *mpns) resolveOnceAsync(ctx context.Context, name string, options opts.
123
key := segments[2]
124
125
if p, ok := ns.cacheGet(key); ok {
126
+ var err error
127
if len(segments) > 3 {
127
- var err error
128
p, err = path.FromSegments("", strings.TrimRight(p.String(), "/"), segments[3])
129
- if err != nil {
130
- emitOnceResult(ctx, out, onceResult{value: p, err: err})
131
- }
129
}
130
134
- out <- onceResult{value: p}
131
+ out <- onceResult{value: p, err: err}
132
close(out)
133
return out
134
}
@@ -183,17 +180,15 @@ func (ns *mpns) resolveOnceAsync(ctx context.Context, name string, options opts.
180
best = res
181
}
182
p := res.value
183
+ err := res.err
184
+ ttl := res.ttl
185
186
// Attach rest of the path
187
if len(segments) > 3 {
189
- var err error
188
p, err = path.FromSegments("", strings.TrimRight(p.String(), "/"), segments[3])
191
- if err != nil {
192
- emitOnceResult(ctx, out, onceResult{value: p, ttl: res.ttl, err: err})
193
- }
189
}
190
196
- emitOnceResult(ctx, out, onceResult{value: p, ttl: res.ttl, err: res.err})
191
+ emitOnceResult(ctx, out, onceResult{value: p, ttl: ttl, err: err})
192
case <-ctx.Done():
193
return
194
}