Skip to content

Commit cd64a50

Browse files
authored
Use addresses in multiaddr format. (cosmos#19)
Resolves cosmos#16.
1 parent f7a551f commit cd64a50

File tree

2 files changed

+14
-80
lines changed

2 files changed

+14
-80
lines changed

p2p/client.go

+4-28
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func NewClient(conf config.P2PConfig, privKey crypto.PrivKey, logger log.Logger)
3434
}
3535
if conf.ListenAddress == "" {
3636
// TODO(tzdybal): extract const
37-
conf.ListenAddress = "0.0.0.0:7676"
37+
conf.ListenAddress = "/ip4/127.0.0.1/tcp/7676"
3838
}
3939
return &Client{
4040
conf: conf,
@@ -61,7 +61,7 @@ func (c *Client) Start() error {
6161

6262
func (c *Client) listen() error {
6363
// TODO(tzdybal): consider requiring listen address in multiaddress format
64-
maddr, err := GetMultiAddr(c.conf.ListenAddress)
64+
maddr, err := multiaddr.NewMultiaddr(c.conf.ListenAddress)
6565
if err != nil {
6666
return err
6767
}
@@ -72,7 +72,7 @@ func (c *Client) listen() error {
7272
return err
7373
}
7474
for _, a := range host.Addrs() {
75-
c.logger.Info("listening on", "address", a)
75+
c.logger.Info("listening on", "address", a, "ID", host.ID())
7676
}
7777

7878
c.host = host
@@ -86,7 +86,7 @@ func (c *Client) bootstrap() error {
8686
}
8787
seeds := strings.Split(c.conf.Seeds, ",")
8888
for _, s := range seeds {
89-
maddr, err := GetMultiAddr(s)
89+
maddr, err := multiaddr.NewMultiaddr(s)
9090
if err != nil {
9191
c.logger.Error("error while parsing seed node", "address", s, "error", err)
9292
continue
@@ -110,27 +110,3 @@ func (c *Client) bootstrap() error {
110110

111111
return nil
112112
}
113-
114-
func GetMultiAddr(addr string) (multiaddr.Multiaddr, error) {
115-
var err error
116-
var p2pId multiaddr.Multiaddr
117-
if at := strings.IndexRune(addr, '@'); at != -1 {
118-
p2pId, err = multiaddr.NewMultiaddr("/p2p/" + addr[:at])
119-
if err != nil {
120-
return nil, err
121-
}
122-
addr = addr[at+1:]
123-
}
124-
parts := strings.Split(addr, ":")
125-
if len(parts) != 2 {
126-
return nil, ErrInvalidAddress
127-
}
128-
maddr, err := multiaddr.NewMultiaddr("/ip4/" + parts[0] + "/tcp/" + parts[1])
129-
if err != nil {
130-
return nil, err
131-
}
132-
if p2pId != nil {
133-
maddr = maddr.Encapsulate(p2pId)
134-
}
135-
return maddr, nil
136-
}

p2p/client_test.go

+10-52
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ package p2p
22

33
import (
44
"crypto/rand"
5-
"strings"
65
"testing"
76

87
"github.com/libp2p/go-libp2p-core/crypto"
98
"github.com/libp2p/go-libp2p-core/peer"
10-
"github.com/multiformats/go-multiaddr"
119
"github.com/stretchr/testify/assert"
1210
"github.com/stretchr/testify/require"
1311

@@ -20,14 +18,17 @@ type TestLogger struct {
2018
}
2119

2220
func (t *TestLogger) Debug(msg string, keyvals ...interface{}) {
21+
t.t.Helper()
2322
t.t.Log(append([]interface{}{"DEBUG: " + msg}, keyvals...)...)
2423
}
2524

2625
func (t *TestLogger) Info(msg string, keyvals ...interface{}) {
26+
t.t.Helper()
2727
t.t.Log(append([]interface{}{"INFO: " + msg}, keyvals...)...)
2828
}
2929

3030
func (t *TestLogger) Error(msg string, keyvals ...interface{}) {
31+
t.t.Helper()
3132
t.t.Log(append([]interface{}{"ERROR: " + msg}, keyvals...)...)
3233
}
3334

@@ -40,6 +41,8 @@ func TestClientStartup(t *testing.T) {
4041

4142
err = client.Start()
4243
assert.NoError(err)
44+
45+
client.host.Close()
4346
}
4447

4548
func TestBootstrapping(t *testing.T) {
@@ -60,21 +63,21 @@ func TestBootstrapping(t *testing.T) {
6063
require.NotEmpty(cid2)
6164

6265
// client1 has no seeds
63-
client1, err := NewClient(config.P2PConfig{ListenAddress: "127.0.0.1:7676"}, privKey1, logger)
66+
client1, err := NewClient(config.P2PConfig{ListenAddress: "/ip4/127.0.0.1/tcp/7676"}, privKey1, logger)
6467
require.NoError(err)
6568
require.NotNil(client1)
6669

6770
// client2 will use client1 as predefined seed
6871
client2, err := NewClient(config.P2PConfig{
69-
ListenAddress: "127.0.0.1:7677",
70-
Seeds: cid1.Pretty() + "@127.0.0.1:7676",
72+
ListenAddress: "/ip4/127.0.0.1/tcp/7677",
73+
Seeds: "/ip4/127.0.0.1/tcp/7676/p2p/" + cid1.Pretty(),
7174
}, privKey2, logger)
7275
require.NoError(err)
7376

7477
// client3 will use clien1 and client2 as seeds
7578
client3, err := NewClient(config.P2PConfig{
76-
ListenAddress: "127.0.0.1:7678",
77-
Seeds: cid1.Pretty() + "@127.0.0.1:7676" + "," + cid2.Pretty() + "@127.0.0.1:7677",
79+
ListenAddress: "/ip4/127.0.0.1/tcp/7678",
80+
Seeds: "/ip4/127.0.0.1/tcp/7676/p2p/" + cid1.Pretty() + ",/ip4/127.0.0.1/tcp/7677/p2p/" + cid2.Pretty(),
7881
}, privKey3, logger)
7982
require.NoError(err)
8083

@@ -91,48 +94,3 @@ func TestBootstrapping(t *testing.T) {
9194
assert.Equal(2, len(client2.host.Network().Peers()))
9295
assert.Equal(2, len(client3.host.Network().Peers()))
9396
}
94-
95-
func TestGetMultiaddr(t *testing.T) {
96-
t.Parallel()
97-
98-
valid := mustGetMultiaddr(t, "/ip4/127.0.0.1/tcp/1234")
99-
withId := mustGetMultiaddr(t, "/ip4/127.0.0.1/tcp/1234/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7")
100-
101-
cases := []struct {
102-
name string
103-
input string
104-
expected multiaddr.Multiaddr
105-
expectedErr string
106-
}{
107-
{"empty", "", nil, ErrInvalidAddress.Error()},
108-
{"no port", "127.0.0.1:", nil, "failed to parse multiaddr"},
109-
{"ip only", "127.0.0.1", nil, ErrInvalidAddress.Error()},
110-
{"with invalid id", "deadbeef@127.0.0.1:1234", nil, "failed to parse multiaddr"},
111-
{"valid", "127.0.0.1:1234", valid, ""},
112-
{"valid with id", "k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7@127.0.0.1:1234", withId, ""},
113-
}
114-
115-
for _, c := range cases {
116-
t.Run(c.name, func(t *testing.T) {
117-
assert := assert.New(t)
118-
actual, err := GetMultiAddr(c.input)
119-
if c.expectedErr != "" {
120-
assert.Error(err)
121-
assert.Nil(actual)
122-
assert.True(strings.HasPrefix(err.Error(), c.expectedErr), "invalid error message")
123-
} else {
124-
assert.NoError(err)
125-
assert.Equal(c.expected, actual)
126-
}
127-
})
128-
}
129-
}
130-
131-
func mustGetMultiaddr(t *testing.T, addr string) multiaddr.Multiaddr {
132-
t.Helper()
133-
maddr, err := multiaddr.NewMultiaddr(addr)
134-
if err != nil {
135-
t.Fatal(err)
136-
}
137-
return maddr
138-
}

0 commit comments

Comments
 (0)