move net -> multiaddr/net
transition our use of the net package to multiaddr/net
Juan Batiz-Benet committed
Oct 11, 2014 at 03:24 UTC
0bd64e7f7137700f573d393d7a6e8d48fd644f8c
7 files changed
+30
-63
daemon/daemon.go
+3
-9
@@ -4,7 +4,6 @@ import (
4
"encoding/json"
5
"fmt"
6
"io"
7
- "net"
7
"os"
8
"path"
9
"sync"
@@ -27,7 +26,7 @@ const LockFile = "daemon.lock"
26
// starting up a new set of connections
27
type DaemonListener struct {
28
node *core.IpfsNode
30
- list net.Listener
29
+ list manet.Listener
30
closed bool
31
wg sync.WaitGroup
32
lk io.Closer
@@ -52,11 +51,6 @@ func NewDaemonListener(ipfsnode *core.IpfsNode, addr ma.Multiaddr, confdir strin
51
return nil, err
52
}
53
55
- network, host, err := manet.DialArgs(addr)
56
- if err != nil {
57
- return nil, err
58
- }
59
-
54
ofi, err := os.Create(confdir + "/rpcaddress")
55
if err != nil {
56
log.Warning("Could not create rpcaddress file: %s", err)
@@ -70,7 +64,7 @@ func NewDaemonListener(ipfsnode *core.IpfsNode, addr ma.Multiaddr, confdir strin
64
}
65
ofi.Close()
66
73
- list, err := net.Listen(network, host)
67
+ list, err := manet.Listen(addr)
68
if err != nil {
69
return nil, err
70
}
@@ -111,7 +105,7 @@ func (dl *DaemonListener) Listen() {
105
}
106
}
107
114
-func (dl *DaemonListener) handleConnection(conn net.Conn) {
108
+func (dl *DaemonListener) handleConnection(conn manet.Conn) {
109
defer conn.Close()
110
111
dec := json.NewDecoder(conn)
daemon/daemon_client.go
+1
-4
@@ -5,7 +5,6 @@ import (
5
"encoding/json"
6
"errors"
7
"io"
8
- "net"
8
"os"
9
10
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
@@ -74,9 +73,7 @@ func SendCommand(command *Command, confdir string) error {
73
return err
74
}
75
77
- network, host, err := manet.DialArgs(maddr)
78
-
79
- conn, err := net.Dial(network, host)
76
+ conn, err := manet.Dial(maddr)
77
if err != nil {
78
return err
79
}
net/conn/conn.go
+4
-16
@@ -2,7 +2,6 @@ package conn
2
3
import (
4
"fmt"
5
- "net"
5
6
msgio "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-msgio"
7
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
@@ -25,7 +24,7 @@ const MaxMessageSize = 1 << 20
24
type Conn struct {
25
Peer *peer.Peer
26
Addr ma.Multiaddr
28
- Conn net.Conn
27
+ Conn manet.Conn
28
29
Closed chan bool
30
Outgoing *msgio.Chan
@@ -37,11 +36,11 @@ type Conn struct {
36
type Map map[u.Key]*Conn
37
38
// NewConn constructs a new connection
40
-func NewConn(peer *peer.Peer, addr ma.Multiaddr, nconn net.Conn) (*Conn, error) {
39
+func NewConn(peer *peer.Peer, addr ma.Multiaddr, mconn manet.Conn) (*Conn, error) {
40
conn := &Conn{
41
Peer: peer,
42
Addr: addr,
44
- Conn: nconn,
43
+ Conn: mconn,
44
}
45
46
if err := conn.newChans(); err != nil {
@@ -59,12 +58,7 @@ func Dial(network string, peer *peer.Peer) (*Conn, error) {
58
return nil, fmt.Errorf("No address for network %s", network)
59
}
60
62
- network, host, err := manet.DialArgs(addr)
63
- if err != nil {
64
- return nil, err
65
- }
66
-
67
- nconn, err := net.Dial(network, host)
61
+ nconn, err := manet.Dial(addr)
62
if err != nil {
63
return nil, err
64
}
@@ -104,9 +98,3 @@ func (c *Conn) Close() error {
98
c.Closed <- true
99
return err
100
}
107
-
108
-// NetConnMultiaddr returns the net.Conn's address, recast as a multiaddr.
109
-// (consider moving this directly into the multiaddr package)
110
-func NetConnMultiaddr(nconn net.Conn) (ma.Multiaddr, error) {
111
- return manet.FromNetAddr(nconn.RemoteAddr())
112
-}
net/conn/conn_test.go
+9
-5
@@ -1,12 +1,12 @@
1
package conn
2
3
import (
4
- "net"
4
"testing"
5
6
peer "github.com/jbenet/go-ipfs/peer"
7
8
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
9
+ manet "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
10
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
11
)
12
@@ -26,7 +26,7 @@ func setupPeer(id string, addr string) (*peer.Peer, error) {
26
return p, nil
27
}
28
29
-func echoListen(listener *net.TCPListener) {
29
+func echoListen(listener manet.Listener) {
30
for {
31
c, err := listener.Accept()
32
if err == nil {
@@ -36,7 +36,7 @@ func echoListen(listener *net.TCPListener) {
36
}
37
}
38
39
-func echo(c net.Conn) {
39
+func echo(c manet.Conn) {
40
for {
41
data := make([]byte, 1024)
42
i, err := c.Read(data)
@@ -55,11 +55,15 @@ func echo(c net.Conn) {
55
56
func TestDial(t *testing.T) {
57
58
- listener, err := net.Listen("tcp", "127.0.0.1:1234")
58
+ maddr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/1234")
59
+ if err != nil {
60
+ t.Fatal("failure to parse multiaddr")
61
+ }
62
+ listener, err := manet.Listen(maddr)
63
if err != nil {
64
t.Fatal("error setting up listener", err)
65
}
62
- go echoListen(listener.(*net.TCPListener))
66
+ go echoListen(listener)
67
68
p, err := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33", "/ip4/127.0.0.1/tcp/1234")
69
if err != nil {
net/swarm/conn.go
+5
-16
@@ -3,7 +3,6 @@ package swarm
3
import (
4
"errors"
5
"fmt"
6
- "net"
6
7
spipe "github.com/jbenet/go-ipfs/crypto/spipe"
8
conn "github.com/jbenet/go-ipfs/net/conn"
@@ -26,7 +25,7 @@ func (s *Swarm) listen() error {
25
if err != nil {
26
hasErr = true
27
retErr.Errors[i] = err
29
- log.Error("Failed to listen on: %s [%s]", addr, err)
28
+ log.Error("Failed to listen on: %s - %s", addr, err)
29
}
30
}
31
@@ -38,12 +37,7 @@ func (s *Swarm) listen() error {
37
38
// Listen for new connections on the given multiaddr
39
func (s *Swarm) connListen(maddr ma.Multiaddr) error {
41
- netstr, addr, err := manet.DialArgs(maddr)
42
- if err != nil {
43
- return err
44
- }
45
-
46
- list, err := net.Listen(netstr, addr)
40
+ list, err := manet.Listen(maddr)
41
if err != nil {
42
return err
43
}
@@ -56,8 +50,7 @@ func (s *Swarm) connListen(maddr ma.Multiaddr) error {
50
for {
51
nconn, err := list.Accept()
52
if err != nil {
59
- e := fmt.Errorf("Failed to accept connection: %s - %s [%s]",
60
- netstr, addr, err)
53
+ e := fmt.Errorf("Failed to accept connection: %s - %s", maddr, err)
54
s.errChan <- e
55
56
// if cancel is nil, we're closed.
@@ -74,13 +67,9 @@ func (s *Swarm) connListen(maddr ma.Multiaddr) error {
67
}
68
69
// Handle getting ID from this peer, handshake, and adding it into the map
77
-func (s *Swarm) handleIncomingConn(nconn net.Conn) {
70
+func (s *Swarm) handleIncomingConn(nconn manet.Conn) {
71
79
- addr, err := conn.NetConnMultiaddr(nconn)
80
- if err != nil {
81
- s.errChan <- err
82
- return
83
- }
72
+ addr := nconn.RemoteMultiaddr()
73
74
// Construct conn with nil peer for now, because we don't know its ID yet.
75
// connSetup will figure this out, and pull out / construct the peer.
net/swarm/swarm.go
+2
-2
@@ -3,7 +3,6 @@ package swarm
3
import (
4
"errors"
5
"fmt"
6
- "net"
6
"sync"
7
8
conn "github.com/jbenet/go-ipfs/net/conn"
@@ -13,6 +12,7 @@ import (
12
13
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
14
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
15
+ manet "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
16
)
17
18
var log = u.Logger("swarm")
@@ -62,7 +62,7 @@ type Swarm struct {
62
connsLock sync.RWMutex
63
64
// listeners for each network address
65
- listeners []net.Listener
65
+ listeners []manet.Listener
66
67
// cancel is an internal function used to stop the Swarm's processing.
68
cancel context.CancelFunc
net/swarm/swarm_test.go
+6
-11
@@ -2,7 +2,6 @@ package swarm
2
3
import (
4
"fmt"
5
- "net"
5
"testing"
6
7
msg "github.com/jbenet/go-ipfs/net/message"
@@ -16,7 +15,7 @@ import (
15
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
16
)
17
19
-func pingListen(t *testing.T, listener *net.TCPListener, peer *peer.Peer) {
18
+func pingListen(t *testing.T, listener manet.Listener, peer *peer.Peer) {
19
for {
20
c, err := listener.Accept()
21
if err == nil {
@@ -25,7 +24,7 @@ func pingListen(t *testing.T, listener *net.TCPListener, peer *peer.Peer) {
24
}
25
}
26
28
-func pong(t *testing.T, c net.Conn, peer *peer.Peer) {
27
+func pong(t *testing.T, c manet.Conn, peer *peer.Peer) {
28
mrw := msgio.NewReadWriter(c)
29
for {
30
data := make([]byte, 1024)
@@ -79,7 +78,7 @@ func TestSwarm(t *testing.T) {
78
t.Error(err)
79
}
80
var peers []*peer.Peer
82
- var listeners []net.Listener
81
+ var listeners []manet.Listener
82
peerNames := map[string]string{
83
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31": "/ip4/127.0.0.1/tcp/2345",
84
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32": "/ip4/127.0.0.1/tcp/3456",
@@ -96,15 +95,11 @@ func TestSwarm(t *testing.T) {
95
if a == nil {
96
t.Fatal("error setting up peer (addr is nil)", peer)
97
}
99
- n, h, err := manet.DialArgs(a)
100
- if err != nil {
101
- t.Fatal("error getting dial args from addr")
102
- }
103
- listener, err := net.Listen(n, h)
98
+ listener, err := manet.Listen(a)
99
if err != nil {
100
t.Fatal("error setting up listener", err)
101
}
107
- go pingListen(t, listener.(*net.TCPListener), peer)
102
+ go pingListen(t, listener, peer)
103
104
_, err = swarm.Dial(peer)
105
if err != nil {
@@ -147,6 +142,6 @@ func TestSwarm(t *testing.T) {
142
143
swarm.Close()
144
for _, listener := range listeners {
150
- listener.(*net.TCPListener).Close()
145
+ listener.Close()
146
}
147
}