Commit 025a8f9d authored by Jeromy's avatar Jeromy

Address PR comments and add in more user feedback

parent 6ba53523
...@@ -103,8 +103,8 @@ func (dht *IpfsDHT) Connect(ctx context.Context, npeer peer.ID) error { ...@@ -103,8 +103,8 @@ func (dht *IpfsDHT) Connect(ctx context.Context, npeer peer.ID) error {
// Ping new peer to register in their routing table // Ping new peer to register in their routing table
// NOTE: this should be done better... // NOTE: this should be done better...
if err := dht.Ping(ctx, npeer); err != nil { if _, err := dht.Ping(ctx, npeer); err != nil {
return fmt.Errorf("failed to ping newly connected peer: %s\n", err) return fmt.Errorf("failed to ping newly connected peer: %s", err)
} }
log.Event(ctx, "connect", dht.self, npeer) log.Event(ctx, "connect", dht.self, npeer)
dht.Update(ctx, npeer) dht.Update(ctx, npeer)
...@@ -329,7 +329,7 @@ func (dht *IpfsDHT) PingRoutine(t time.Duration) { ...@@ -329,7 +329,7 @@ func (dht *IpfsDHT) PingRoutine(t time.Duration) {
peers := dht.routingTable.NearestPeers(kb.ConvertKey(u.Key(id)), 5) peers := dht.routingTable.NearestPeers(kb.ConvertKey(u.Key(id)), 5)
for _, p := range peers { for _, p := range peers {
ctx, _ := context.WithTimeout(dht.Context(), time.Second*5) ctx, _ := context.WithTimeout(dht.Context(), time.Second*5)
err := dht.Ping(ctx, p) _, err := dht.Ping(ctx, p)
if err != nil { if err != nil {
log.Errorf("Ping error: %s", err) log.Errorf("Ping error: %s", err)
} }
......
...@@ -3,6 +3,7 @@ package dht ...@@ -3,6 +3,7 @@ package dht
import ( import (
"math" "math"
"sync" "sync"
"time"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
...@@ -434,12 +435,14 @@ func (dht *IpfsDHT) FindPeersConnectedToPeer(ctx context.Context, id peer.ID) (< ...@@ -434,12 +435,14 @@ func (dht *IpfsDHT) FindPeersConnectedToPeer(ctx context.Context, id peer.ID) (<
} }
// Ping a peer, log the time it took // Ping a peer, log the time it took
func (dht *IpfsDHT) Ping(ctx context.Context, p peer.ID) error { func (dht *IpfsDHT) Ping(ctx context.Context, p peer.ID) (time.Duration, error) {
// Thoughts: maybe this should accept an ID and do a peer lookup? // Thoughts: maybe this should accept an ID and do a peer lookup?
log.Debugf("ping %s start", p) log.Debugf("ping %s start", p)
before := time.Now()
pmes := pb.NewMessage(pb.Message_PING, "", 0) pmes := pb.NewMessage(pb.Message_PING, "", 0)
_, err := dht.sendRequest(ctx, p, pmes) _, err := dht.sendRequest(ctx, p, pmes)
log.Debugf("ping %s end (err = %s)", p, err) log.Debugf("ping %s end (err = %s)", p, err)
return err
return time.Now().Sub(before), err
} }
...@@ -2,6 +2,7 @@ package mockrouting ...@@ -2,6 +2,7 @@ package mockrouting
import ( import (
"errors" "errors"
"time"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
...@@ -79,8 +80,8 @@ func (c *client) Provide(_ context.Context, key u.Key) error { ...@@ -79,8 +80,8 @@ func (c *client) Provide(_ context.Context, key u.Key) error {
return c.server.Announce(info, key) return c.server.Announce(info, key)
} }
func (c *client) Ping(ctx context.Context, p peer.ID) error { func (c *client) Ping(ctx context.Context, p peer.ID) (time.Duration, error) {
return nil return 0, nil
} }
var _ routing.IpfsRouting = &client{} var _ routing.IpfsRouting = &client{}
...@@ -3,6 +3,7 @@ package routing ...@@ -3,6 +3,7 @@ package routing
import ( import (
"errors" "errors"
"time"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
...@@ -38,5 +39,5 @@ type IpfsRouting interface { ...@@ -38,5 +39,5 @@ type IpfsRouting interface {
FindPeer(context.Context, peer.ID) (peer.PeerInfo, error) FindPeer(context.Context, peer.ID) (peer.PeerInfo, error)
// Ping a peer, log the time it took // Ping a peer, log the time it took
Ping(context.Context, peer.ID) error Ping(context.Context, peer.ID) (time.Duration, error)
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment