@cryptotaxi247 / kubo / commits / 4cc1f60d9

Peerstore -- threadsafe collection

this will later have persistent storage, but no need yet

Juan Batiz-Benet committed Sep 16, 2014 at 05:05 UTC 4cc1f60d91532697c536c7db4954989866a354c0
1 file changed +20 -13
routing/dht/dht.go
+20 -13
@@ -194,25 +194,27 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
194 return nil, nil, err
195 }
196
197 - if pmes.GetSuccess() {
198 - if pmes.Value == nil { // We were given provider[s]
199 - val, err := dht.getFromPeerList(key, timeout, pmes.GetPeers(), level)
200 - if err != nil {
201 - return nil, nil, err
202 - }
203 - return val, nil, nil
204 - }
205 -
197 + if value := pmes.GetValue(); value != nil {
198 // Success! We were given the value
207 - return pmes.GetValue(), nil, nil
199 + return value, nil, nil
200 }
201
210 - // We were given a closer node
202 + // TODO decide on providers. This probably shouldn't be happening.
203 + // if prv := pmes.GetProviderPeers(); prv != nil && len(prv) > 0 {
204 + // val, err := dht.getFromPeerList(key, timeout,, level)
205 + // if err != nil {
206 + // return nil, nil, err
207 + // }
208 + // return val, nil, nil
209 + // }
210 +
211 + // Perhaps we were given closer peers
212 var peers []*peer.Peer
212 - for _, pb := range pmes.GetPeers() {
213 + for _, pb := range pmes.GetCloserPeers() {
214 if peer.ID(pb.GetId()).Equal(dht.self.ID) {
215 continue
216 }
217 +
218 addr, err := ma.NewMultiaddr(pb.GetAddr())
219 if err != nil {
220 u.PErr("%v\n", err.Error())
@@ -227,7 +229,12 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
229
230 peers = append(peers, np)
231 }
230 - return nil, peers, nil
232 +
233 + if len(peers) > 0 {
234 + return nil, peers, nil
235 + }
236 +
237 + return nil, nil, errors.New("NotFound. did not get value or closer peers.")
238 }
239
240 // getValueSingle simply performs the get value RPC with the given parameters