namesys: review fixes
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Oct 16, 2018 at 11:41 UTC
7dbeb27e5b1e18f126aaaf3bd2cd8eba81ec675f
6 files changed
+27
-14
core/coreapi/interface/name.go
-1
@@ -2,7 +2,6 @@ package iface
2
3
import (
4
"context"
5
-
5
"errors"
6
7
options "github.com/ipfs/go-ipfs/core/coreapi/interface/options"
core/coreapi/name.go
+1
-2
@@ -7,8 +7,6 @@ import (
7
"strings"
8
"time"
9
10
- ipath "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
11
-
10
"github.com/ipfs/go-ipfs/core"
11
coreiface "github.com/ipfs/go-ipfs/core/coreapi/interface"
12
caopts "github.com/ipfs/go-ipfs/core/coreapi/interface/options"
@@ -18,6 +16,7 @@ import (
16
"gx/ipfs/QmPvyPwuCgJ7pDmrKDxRtsScJgBaM5h4EpRL2qQJsmXf4n/go-libp2p-crypto"
17
"gx/ipfs/QmQ9PR61a8rwEFuFNs7JMA1QtQC9yZnBwoDn51JWXDbaTd/go-ipfs-routing/offline"
18
"gx/ipfs/QmbNepETomvmXfz1X5pHNFD2QuPqnqi47dTd94QJWSorQ3/go-libp2p-peer"
19
+ ipath "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
20
)
21
22
type NameAPI CoreAPI
core/corehttp/gateway_test.go
+1
-1
@@ -62,7 +62,7 @@ func (m mockNamesys) ResolveAsync(ctx context.Context, name string, opts ...nsop
62
v, err := m.Resolve(ctx, name, opts...)
63
out <- namesys.Result{Path: v, Err: err}
64
close(out)
65
- return nil
65
+ return out
66
}
67
68
func (m mockNamesys) Publish(ctx context.Context, name ci.PrivKey, value path.Path) error {
namesys/base.go
+9
-7
@@ -1,12 +1,12 @@
1
package namesys
2
3
import (
4
+ "context"
5
"strings"
6
"time"
7
7
- context "context"
8
-
8
opts "github.com/ipfs/go-ipfs/namesys/opts"
9
+
10
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
11
)
12
@@ -40,13 +40,10 @@ func resolve(ctx context.Context, r resolver, name string, options opts.ResolveO
40
return p, err
41
}
42
43
-//TODO:
44
-// - better error handling
45
-// - select on writes
43
func resolveAsync(ctx context.Context, r resolver, name string, options opts.ResolveOpts, prefix string) <-chan Result {
44
resCh := r.resolveOnceAsync(ctx, name, options)
45
depth := options.Depth
49
- outCh := make(chan Result)
46
+ outCh := make(chan Result, 1)
47
48
go func() {
49
defer close(outCh)
@@ -97,8 +94,13 @@ func resolveAsync(ctx context.Context, r resolver, name string, options opts.Res
94
break
95
}
96
100
- outCh <- res
97
+ select {
98
+ case outCh <- res:
99
+ case <-ctx.Done():
100
+ return
101
+ }
102
case <-ctx.Done():
103
+ return
104
}
105
if resCh == nil && subCh == nil {
106
return
namesys/dns.go
+1
@@ -7,6 +7,7 @@ import (
7
"strings"
8
9
opts "github.com/ipfs/go-ipfs/namesys/opts"
10
+
11
isd "gx/ipfs/QmZmmuAXgX73UQmX1jRKjTGmjzq24Jinqkq8vzkBtno4uX/go-is-domain"
12
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
13
)
namesys/namesys.go
+15
-3
@@ -5,9 +5,10 @@ import (
5
"strings"
6
"time"
7
8
- opts "github.com/ipfs/go-ipfs/namesys/opts"
8
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
9
10
+ opts "github.com/ipfs/go-ipfs/namesys/opts"
11
+
12
routing "gx/ipfs/QmPmFeQ5oY5G6M7aBWggi5phxEPXwsQntE1DFcUzETULdp/go-libp2p-routing"
13
mh "gx/ipfs/QmPnFwZ2JXKnXgMw8CdBPxn7FWh6LLdjUjxV1fKHuJnkr8/go-multihash"
14
ci "gx/ipfs/QmPvyPwuCgJ7pDmrKDxRtsScJgBaM5h4EpRL2qQJsmXf4n/go-libp2p-crypto"
@@ -138,10 +139,21 @@ func (ns *mpns) resolveOnceAsync(ctx context.Context, name string, options opts.
139
140
// Attach rest of the path
141
if len(segments) > 3 {
141
- p, _ = path.FromSegments("", strings.TrimRight(p.String(), "/"), segments[3])
142
+ p, err := path.FromSegments("", strings.TrimRight(p.String(), "/"), segments[3])
143
+ if err != nil {
144
+ select {
145
+ case out <- onceResult{value: p, err: err}:
146
+ case <-ctx.Done():
147
+ }
148
+ return
149
+ }
150
}
151
144
- out <- onceResult{value: p, err: res.err}
152
+ select {
153
+ case out <- onceResult{value: p, ttl: res.ttl, err: res.err}:
154
+ case <-ctx.Done():
155
+ return
156
+ }
157
case <-ctx.Done():
158
return
159
}