@cryptotaxi247 / kubo / commits / 0bd64e7f7

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 }