From ee449cb884b9bd82c27bfa209e8cf79202e4c9ac Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 2 Mar 2015 23:53:30 -0800 Subject: [PATCH 1/2] Fixed #780 --- p2p/peer/peer.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/p2p/peer/peer.go b/p2p/peer/peer.go index 9491effbc..1d94ebeaa 100644 --- a/p2p/peer/peer.go +++ b/p2p/peer/peer.go @@ -39,10 +39,11 @@ func (id ID) Loggable() map[string]interface{} { func (id ID) String() string { pid := id.Pretty() maxRunes := 6 - if len(pid) < maxRunes { - maxRunes = len(pid) + skip := 2 //Added to skip past Qm which is identical for all SHA256 nodes + if len(pid) < maxRunes + skip { + maxRunes = len(pid) - skip } - return fmt.Sprintf("", pid[:maxRunes]) + return fmt.Sprintf("", pid[skip:maxRunes + skip]) } // MatchesPrivateKey tests whether this ID was derived from sk From da80f22bfe69a7a0fce3061065913c4413ba5dd3 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 3 Mar 2015 09:20:23 -0800 Subject: [PATCH 2/2] Implemented @jbenet's suggestion to avoid panics if peerID is of length 0. --- p2p/peer/peer.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/p2p/peer/peer.go b/p2p/peer/peer.go index 1d94ebeaa..26ef93373 100644 --- a/p2p/peer/peer.go +++ b/p2p/peer/peer.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "strings" b58 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-base58" ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr" @@ -38,12 +39,18 @@ func (id ID) Loggable() map[string]interface{} { // codebase is known to be correct. func (id ID) String() string { pid := id.Pretty() - maxRunes := 6 - skip := 2 //Added to skip past Qm which is identical for all SHA256 nodes - if len(pid) < maxRunes + skip { - maxRunes = len(pid) - skip + + //All sha256 nodes start with Qm + //We can skip the Qm to make the peer.ID more useful + if strings.HasPrefix(pid, "Qm") { + pid = pid[2:] } - return fmt.Sprintf("", pid[skip:maxRunes + skip]) + + maxRunes := 6 + if len(pid) < maxRunes { + maxRunes = len(pid) + } + return fmt.Sprintf("", pid[:maxRunes]) } // MatchesPrivateKey tests whether this ID was derived from sk