提交 10cd499a 作者: Juan Batiz-Benet

cmds/swarm connect had broken

上级 581c4e55
...@@ -12,6 +12,7 @@ import ( ...@@ -12,6 +12,7 @@ import (
iaddr "github.com/jbenet/go-ipfs/util/ipfsaddr" iaddr "github.com/jbenet/go-ipfs/util/ipfsaddr"
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"
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
) )
type stringList struct { type stringList struct {
...@@ -172,17 +173,17 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3 ...@@ -172,17 +173,17 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3
return return
} }
peers, err := peersWithAddresses(n.Peerstore, addrs) pis, err := peersWithAddresses(addrs)
if err != nil { if err != nil {
res.SetError(err, cmds.ErrNormal) res.SetError(err, cmds.ErrNormal)
return return
} }
output := make([]string, len(peers)) output := make([]string, len(pis))
for i, p := range peers { for i, pi := range pis {
output[i] = "connect " + p.Pretty() output[i] = "connect " + pi.ID.Pretty()
err := n.PeerHost.Connect(ctx, peer.PeerInfo{ID: p}) err := n.PeerHost.Connect(ctx, pi)
if err != nil { if err != nil {
output[i] += " failure: " + err.Error() output[i] += " failure: " + err.Error()
} else { } else {
...@@ -294,15 +295,17 @@ func parseAddresses(addrs []string) (iaddrs []iaddr.IPFSAddr, err error) { ...@@ -294,15 +295,17 @@ func parseAddresses(addrs []string) (iaddrs []iaddr.IPFSAddr, err error) {
// peersWithAddresses is a function that takes in a slice of string peer addresses // peersWithAddresses is a function that takes in a slice of string peer addresses
// (multiaddr + peerid) and returns a slice of properly constructed peers // (multiaddr + peerid) and returns a slice of properly constructed peers
func peersWithAddresses(ps peer.Peerstore, addrs []string) (pids []peer.ID, err error) { func peersWithAddresses(addrs []string) (pis []peer.PeerInfo, err error) {
iaddrs, err := parseAddresses(addrs) iaddrs, err := parseAddresses(addrs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, iaddr := range iaddrs { for _, iaddr := range iaddrs {
pids = append(pids, iaddr.ID()) pis = append(pis, peer.PeerInfo{
ps.AddAddr(iaddr.ID(), iaddr.Multiaddr(), peer.TempAddrTTL) ID: iaddr.ID(),
Addrs: []ma.Multiaddr{iaddr.Transport()},
})
} }
return pids, nil return pis, nil
} }
...@@ -301,7 +301,7 @@ func (s *Swarm) dial(ctx context.Context, p peer.ID) (*Conn, error) { ...@@ -301,7 +301,7 @@ func (s *Swarm) dial(ctx context.Context, p peer.ID) (*Conn, error) {
ila, _ := s.InterfaceListenAddresses() ila, _ := s.InterfaceListenAddresses()
remoteAddrs = addrutil.Subtract(remoteAddrs, ila) remoteAddrs = addrutil.Subtract(remoteAddrs, ila)
remoteAddrs = addrutil.Subtract(remoteAddrs, s.peers.Addrs(s.local)) remoteAddrs = addrutil.Subtract(remoteAddrs, s.peers.Addrs(s.local))
log.Debugf("%s swarm dialing %s -- remote:%s local:%s", s.local, p, remoteAddrs, s.ListenAddresses()) log.Debugf("%s swarm dialing %s -- local:%s remote:%s", s.local, p, s.ListenAddresses(), remoteAddrs)
if len(remoteAddrs) == 0 { if len(remoteAddrs) == 0 {
err := errors.New("peer has no addresses") err := errors.New("peer has no addresses")
logdial["error"] = err logdial["error"] = err
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论