@cryptotaxi247 / kubo / commits / 7dbeb27e5

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 }