Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3
Commits
917be904
Commit
917be904
authored
10 years ago
by
Juan Batiz-Benet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated multiaddr for net pkg
parent
26c4e500
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
487 additions
and
33 deletions
+487
-33
Godeps/Godeps.json
Godeps/Godeps.json
+3
-3
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/.travis.yml
..._workspace/src/github.com/jbenet/go-multiaddr/.travis.yml
+10
-0
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/README.md
...orkspace/src/github.com/jbenet/go-multiaddr/net/README.md
+11
-0
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/convert.go
...rkspace/src/github.com/jbenet/go-multiaddr/net/convert.go
+15
-13
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/convert_test.go
...ce/src/github.com/jbenet/go-multiaddr/net/convert_test.go
+12
-10
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/doc.go
.../_workspace/src/github.com/jbenet/go-multiaddr/net/doc.go
+5
-0
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/net.go
.../_workspace/src/github.com/jbenet/go-multiaddr/net/net.go
+218
-0
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/net_test.go
...kspace/src/github.com/jbenet/go-multiaddr/net/net_test.go
+200
-0
daemon/daemon.go
daemon/daemon.go
+2
-1
daemon/daemon_client.go
daemon/daemon_client.go
+2
-1
net/conn/conn.go
net/conn/conn.go
+3
-2
net/swarm/conn.go
net/swarm/conn.go
+2
-1
net/swarm/swarm_test.go
net/swarm/swarm_test.go
+2
-1
server/http/http.go
server/http/http.go
+2
-1
No files found.
Godeps/Godeps.json
View file @
917be904
{
"ImportPath"
:
"github.com/jbenet/go-ipfs"
,
"GoVersion"
:
"go1.3
.3
"
,
"GoVersion"
:
"go1.3"
,
"Packages"
:
[
"./..."
],
...
...
@@ -84,8 +84,8 @@
},
{
"ImportPath"
:
"github.com/jbenet/go-multiaddr"
,
"Comment"
:
"0.1.2-1
1
-g
2a572df
"
,
"Rev"
:
"
2a572df05cbbb3a0b0b3d0095a9af16757cbbf9f
"
"Comment"
:
"0.1.2-1
7
-g
68a2067
"
,
"Rev"
:
"
68a20675cb0829da219def0d90afe17a7219e8c7
"
},
{
"ImportPath"
:
"github.com/jbenet/go-multihash"
,
...
...
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/.travis.yml
0 → 100644
View file @
917be904
language
:
go
go
:
-
1.2
-
1.3
-
release
-
tip
script
:
-
go test -v ./...
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/README.md
0 → 100644
View file @
917be904
# multiaddr/net - Multiaddr friendly net
Package multiaddr/net provides Multiaddr specific versions of common
functions in stdlib's net package. This means wrappers of
standard net symbols like net.Dial and net.Listen, as well
as conversion to/from net.Addr.
Docs:
-
`multiaddr/net`
: https://godoc.org/github.com/jbenet/go-multiaddr/net
-
`multiaddr`
: https://godoc.org/github.com/jbenet/go-multiaddr
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net.go
→
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net
/convert
.go
View file @
917be904
package
multiaddr
package
net
import
(
"fmt"
"net"
"strings"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
)
var
errIncorrectNetAddr
=
fmt
.
Errorf
(
"incorrect network addr conversion"
)
// FromNetAddr converts a net.Addr type to a Multiaddr.
func
FromNetAddr
(
a
net
.
Addr
)
(
Multiaddr
,
error
)
{
func
FromNetAddr
(
a
net
.
Addr
)
(
ma
.
Multiaddr
,
error
)
{
switch
a
.
Network
()
{
case
"tcp"
,
"tcp4"
,
"tcp6"
:
ac
,
ok
:=
a
.
(
*
net
.
TCPAddr
)
...
...
@@ -24,7 +26,7 @@ func FromNetAddr(a net.Addr) (Multiaddr, error) {
}
// Get TCP Addr
tcpm
,
err
:=
NewMultiaddr
(
fmt
.
Sprintf
(
"/tcp/%d"
,
ac
.
Port
))
tcpm
,
err
:=
ma
.
NewMultiaddr
(
fmt
.
Sprintf
(
"/tcp/%d"
,
ac
.
Port
))
if
err
!=
nil
{
return
nil
,
errIncorrectNetAddr
}
...
...
@@ -45,7 +47,7 @@ func FromNetAddr(a net.Addr) (Multiaddr, error) {
}
// Get UDP Addr
udpm
,
err
:=
NewMultiaddr
(
fmt
.
Sprintf
(
"/udp/%d"
,
ac
.
Port
))
udpm
,
err
:=
ma
.
NewMultiaddr
(
fmt
.
Sprintf
(
"/udp/%d"
,
ac
.
Port
))
if
err
!=
nil
{
return
nil
,
errIncorrectNetAddr
}
...
...
@@ -68,8 +70,8 @@ func FromNetAddr(a net.Addr) (Multiaddr, error) {
// ToNetAddr converts a Multiaddr to a net.Addr
// Must be ThinWaist. acceptable protocol stacks are:
// /ip{4,6}/{tcp, udp}
func
ToNetAddr
(
ma
Multiaddr
)
(
net
.
Addr
,
error
)
{
network
,
host
,
err
:=
DialArgs
(
ma
)
func
ToNetAddr
(
ma
ddr
ma
.
Multiaddr
)
(
net
.
Addr
,
error
)
{
network
,
host
,
err
:=
DialArgs
(
ma
ddr
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -87,19 +89,19 @@ func ToNetAddr(ma Multiaddr) (net.Addr, error) {
}
// FromIP converts a net.IP type to a Multiaddr.
func
FromIP
(
ip
net
.
IP
)
(
Multiaddr
,
error
)
{
func
FromIP
(
ip
net
.
IP
)
(
ma
.
Multiaddr
,
error
)
{
switch
{
case
ip
.
To4
()
!=
nil
:
return
NewMultiaddr
(
"/ip4/"
+
ip
.
String
())
return
ma
.
NewMultiaddr
(
"/ip4/"
+
ip
.
String
())
case
ip
.
To16
()
!=
nil
:
return
NewMultiaddr
(
"/ip6/"
+
ip
.
String
())
return
ma
.
NewMultiaddr
(
"/ip6/"
+
ip
.
String
())
default
:
return
nil
,
errIncorrectNetAddr
}
}
// DialArgs is a convenience function returning arguments for use in net.Dial
func
DialArgs
(
m
Multiaddr
)
(
string
,
string
,
error
)
{
func
DialArgs
(
m
ma
.
Multiaddr
)
(
string
,
string
,
error
)
{
if
!
IsThinWaist
(
m
)
{
return
""
,
""
,
fmt
.
Errorf
(
"%s is not a 'thin waist' address"
,
m
)
}
...
...
@@ -124,7 +126,7 @@ func DialArgs(m Multiaddr) (string, string, error) {
// IsThinWaist returns whether a Multiaddr starts with "Thin Waist" Protocols.
// This means: /{IP4, IP6}[/{TCP, UDP}]
func
IsThinWaist
(
m
Multiaddr
)
bool
{
func
IsThinWaist
(
m
ma
.
Multiaddr
)
bool
{
p
:=
m
.
Protocols
()
// nothing? not even a waist.
...
...
@@ -132,7 +134,7 @@ func IsThinWaist(m Multiaddr) bool {
return
false
}
if
p
[
0
]
.
Code
!=
P_IP4
&&
p
[
0
]
.
Code
!=
P_IP6
{
if
p
[
0
]
.
Code
!=
ma
.
P_IP4
&&
p
[
0
]
.
Code
!=
ma
.
P_IP6
{
return
false
}
...
...
@@ -142,7 +144,7 @@ func IsThinWaist(m Multiaddr) bool {
}
switch
p
[
1
]
.
Code
{
case
P_TCP
,
P_UDP
,
P_IP4
,
P_IP6
:
case
ma
.
P_TCP
,
ma
.
P_UDP
,
ma
.
P_IP4
,
ma
.
P_IP6
:
return
true
default
:
return
false
...
...
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net_test.go
→
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net
/convert
_test.go
View file @
917be904
package
multiaddr
package
net
import
(
"net"
"testing"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
)
type
GenFunc
func
()
(
Multiaddr
,
error
)
type
GenFunc
func
()
(
ma
.
Multiaddr
,
error
)
func
testConvert
(
t
*
testing
.
T
,
s
string
,
gen
GenFunc
)
{
m
,
err
:=
gen
()
...
...
@@ -19,7 +21,7 @@ func testConvert(t *testing.T, s string, gen GenFunc) {
}
func
testToNetAddr
(
t
*
testing
.
T
,
maddr
,
ntwk
,
addr
string
)
{
m
,
err
:=
NewMultiaddr
(
maddr
)
m
,
err
:=
ma
.
NewMultiaddr
(
maddr
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to generate."
)
}
...
...
@@ -57,19 +59,19 @@ func testToNetAddr(t *testing.T, maddr, ntwk, addr string) {
}
func
TestFromIP4
(
t
*
testing
.
T
)
{
testConvert
(
t
,
"/ip4/10.20.30.40"
,
func
()
(
Multiaddr
,
error
)
{
testConvert
(
t
,
"/ip4/10.20.30.40"
,
func
()
(
ma
.
Multiaddr
,
error
)
{
return
FromIP
(
net
.
ParseIP
(
"10.20.30.40"
))
})
}
func
TestFromIP6
(
t
*
testing
.
T
)
{
testConvert
(
t
,
"/ip6/2001:4860:0:2001::68"
,
func
()
(
Multiaddr
,
error
)
{
testConvert
(
t
,
"/ip6/2001:4860:0:2001::68"
,
func
()
(
ma
.
Multiaddr
,
error
)
{
return
FromIP
(
net
.
ParseIP
(
"2001:4860:0:2001::68"
))
})
}
func
TestFromTCP
(
t
*
testing
.
T
)
{
testConvert
(
t
,
"/ip4/10.20.30.40/tcp/1234"
,
func
()
(
Multiaddr
,
error
)
{
testConvert
(
t
,
"/ip4/10.20.30.40/tcp/1234"
,
func
()
(
ma
.
Multiaddr
,
error
)
{
return
FromNetAddr
(
&
net
.
TCPAddr
{
IP
:
net
.
ParseIP
(
"10.20.30.40"
),
Port
:
1234
,
...
...
@@ -78,7 +80,7 @@ func TestFromTCP(t *testing.T) {
}
func
TestFromUDP
(
t
*
testing
.
T
)
{
testConvert
(
t
,
"/ip4/10.20.30.40/udp/1234"
,
func
()
(
Multiaddr
,
error
)
{
testConvert
(
t
,
"/ip4/10.20.30.40/udp/1234"
,
func
()
(
ma
.
Multiaddr
,
error
)
{
return
FromNetAddr
(
&
net
.
UDPAddr
{
IP
:
net
.
ParseIP
(
"10.20.30.40"
),
Port
:
1234
,
...
...
@@ -103,19 +105,19 @@ func TestThinWaist(t *testing.T) {
}
for
a
,
res
:=
range
addrs
{
m
a
,
err
:=
NewMultiaddr
(
a
)
m
,
err
:=
ma
.
NewMultiaddr
(
a
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to construct Multiaddr: %s"
,
a
)
}
if
IsThinWaist
(
m
a
)
!=
res
{
if
IsThinWaist
(
m
)
!=
res
{
t
.
Fatalf
(
"IsThinWaist(%s) != %v"
,
a
,
res
)
}
}
}
func
TestDialArgs
(
t
*
testing
.
T
)
{
m
,
err
:=
NewMultiaddr
(
"/ip4/127.0.0.1/udp/1234"
)
m
,
err
:=
ma
.
NewMultiaddr
(
"/ip4/127.0.0.1/udp/1234"
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to construct"
,
"/ip4/127.0.0.1/udp/1234"
)
}
...
...
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/doc.go
0 → 100644
View file @
917be904
// Package net provides Multiaddr specific versions of common
// functions in stdlib's net package. This means wrappers of
// standard net symbols like net.Dial and net.Listen, as well
// as conversion to/from net.Addr.
package
net
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/net.go
0 → 100644
View file @
917be904
package
net
import
(
"fmt"
"net"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
)
// Conn is the equivalent of a net.Conn object. It is the
// result of calling the Dial or Listen functions in this
// package, with associated local and remote Multiaddrs.
type
Conn
interface
{
net
.
Conn
// LocalMultiaddr returns the local Multiaddr associated
// with this connection
LocalMultiaddr
()
ma
.
Multiaddr
// RemoteMultiaddr returns the remote Multiaddr associated
// with this connection
RemoteMultiaddr
()
ma
.
Multiaddr
}
// WrapNetConn wraps a net.Conn object with a Multiaddr
// friendly Conn.
func
WrapNetConn
(
nconn
net
.
Conn
)
(
Conn
,
error
)
{
laddr
,
err
:=
FromNetAddr
(
nconn
.
LocalAddr
())
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to convert nconn.LocalAddr: %s"
,
err
)
}
raddr
,
err
:=
FromNetAddr
(
nconn
.
RemoteAddr
())
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to convert nconn.RemoteAddr: %s"
,
err
)
}
return
&
maConn
{
Conn
:
nconn
,
laddr
:
laddr
,
raddr
:
raddr
,
},
nil
}
// maConn implements the Conn interface. It's a thin wrapper
// around a net.Conn
type
maConn
struct
{
net
.
Conn
laddr
ma
.
Multiaddr
raddr
ma
.
Multiaddr
}
// LocalMultiaddr returns the local address associated with
// this connection
func
(
c
*
maConn
)
LocalMultiaddr
()
ma
.
Multiaddr
{
return
c
.
laddr
}
// RemoteMultiaddr returns the remote address associated with
// this connection
func
(
c
*
maConn
)
RemoteMultiaddr
()
ma
.
Multiaddr
{
return
c
.
raddr
}
// Dialer contains options for connecting to an address. It
// is effectively the same as net.Dialer, but its LocalAddr
// and RemoteAddr options are Multiaddrs, instead of net.Addrs.
type
Dialer
struct
{
// Dialer is just an embed net.Dialer, with all its options.
net
.
Dialer
// LocalAddr is the local address to use when dialing an
// address. The address must be of a compatible type for the
// network being dialed.
// If nil, a local address is automatically chosen.
LocalAddr
ma
.
Multiaddr
}
// Dial connects to a remote address, using the options of the
// Dialer. Dialer uses an underlying net.Dialer to Dial a
// net.Conn, then wraps that in a Conn object (with local and
// remote Multiaddrs).
func
(
d
*
Dialer
)
Dial
(
remote
ma
.
Multiaddr
)
(
Conn
,
error
)
{
// if a LocalAddr is specified, use it on the embedded dialer.
if
d
.
LocalAddr
!=
nil
{
// convert our multiaddr to net.Addr friendly
naddr
,
err
:=
ToNetAddr
(
d
.
LocalAddr
)
if
err
!=
nil
{
return
nil
,
err
}
// set the dialer's LocalAddr as naddr
d
.
Dialer
.
LocalAddr
=
naddr
}
// get the net.Dial friendly arguments from the remote addr
rnet
,
rnaddr
,
err
:=
DialArgs
(
remote
)
if
err
!=
nil
{
return
nil
,
err
}
// ok, Dial!
nconn
,
err
:=
d
.
Dialer
.
Dial
(
rnet
,
rnaddr
)
if
err
!=
nil
{
return
nil
,
err
}
// get local address (pre-specified or assigned within net.Conn)
local
:=
d
.
LocalAddr
if
local
==
nil
{
local
,
err
=
FromNetAddr
(
nconn
.
LocalAddr
())
if
err
!=
nil
{
return
nil
,
err
}
}
return
&
maConn
{
Conn
:
nconn
,
laddr
:
local
,
raddr
:
remote
,
},
nil
}
// Dial connects to a remote address. It uses an underlying net.Conn,
// then wraps it in a Conn object (with local and remote Multiaddrs).
func
Dial
(
remote
ma
.
Multiaddr
)
(
Conn
,
error
)
{
return
(
&
Dialer
{})
.
Dial
(
remote
)
}
// A Listener is a generic network listener for stream-oriented protocols.
// it uses an embedded net.Listener, overriding net.Listener.Accept to
// return a Conn and providing Multiaddr.
type
Listener
interface
{
// NetListener returns the embedded net.Listener. Use with caution.
NetListener
()
net
.
Listener
// Accept waits for and returns the next connection to the listener.
// Returns a Multiaddr friendly Conn
Accept
()
(
Conn
,
error
)
// Close closes the listener.
// Any blocked Accept operations will be unblocked and return errors.
Close
()
error
// Multiaddr returns the listener's (local) Multiaddr.
Multiaddr
()
ma
.
Multiaddr
// Addr returns the net.Listener's network address.
Addr
()
net
.
Addr
}
// maListener implements Listener
type
maListener
struct
{
net
.
Listener
laddr
ma
.
Multiaddr
}
// NetListener returns the embedded net.Listener. Use with caution.
func
(
l
*
maListener
)
NetListener
()
net
.
Listener
{
return
l
.
Listener
}
// Accept waits for and returns the next connection to the listener.
// Returns a Multiaddr friendly Conn
func
(
l
*
maListener
)
Accept
()
(
Conn
,
error
)
{
nconn
,
err
:=
l
.
Listener
.
Accept
()
if
err
!=
nil
{
return
nil
,
err
}
raddr
,
err
:=
FromNetAddr
(
nconn
.
RemoteAddr
())
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to convert connn.RemoteAddr: %s"
,
err
)
}
return
&
maConn
{
Conn
:
nconn
,
laddr
:
l
.
laddr
,
raddr
:
raddr
,
},
nil
}
// Multiaddr returns the listener's (local) Multiaddr.
func
(
l
*
maListener
)
Multiaddr
()
ma
.
Multiaddr
{
return
l
.
laddr
}
// Addr returns the listener's network address.
func
(
l
*
maListener
)
Addr
()
net
.
Addr
{
return
l
.
Listener
.
Addr
()
}
// Listen announces on the local network address laddr.
// The Multiaddr must be a "ThinWaist" stream-oriented network:
// ip4/tcp, ip6/tcp, (TODO: unix, unixpacket)
// See Dial for the syntax of laddr.
func
Listen
(
laddr
ma
.
Multiaddr
)
(
Listener
,
error
)
{
// get the net.Listen friendly arguments from the remote addr
lnet
,
lnaddr
,
err
:=
DialArgs
(
laddr
)
if
err
!=
nil
{
return
nil
,
err
}
nl
,
err
:=
net
.
Listen
(
lnet
,
lnaddr
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
maListener
{
Listener
:
nl
,
laddr
:
laddr
,
},
nil
}
This diff is collapsed.
Click to expand it.
Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net/net_test.go
0 → 100644
View file @
917be904
package
net
import
(
"bytes"
"net"
"sync"
"testing"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
)
func
newMultiaddr
(
t
*
testing
.
T
,
m
string
)
ma
.
Multiaddr
{
maddr
,
err
:=
ma
.
NewMultiaddr
(
m
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to construct multiaddr: %s"
,
m
)
}
return
maddr
}
func
TestDial
(
t
*
testing
.
T
)
{
listener
,
err
:=
net
.
Listen
(
"tcp"
,
"127.0.0.1:4321"
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to listen"
)
}
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
go
func
()
{
cB
,
err
:=
listener
.
Accept
()
if
err
!=
nil
{
t
.
Fatal
(
"failed to accept"
)
}
// echo out
buf
:=
make
([]
byte
,
1024
)
for
{
_
,
err
:=
cB
.
Read
(
buf
)
if
err
!=
nil
{
break
}
cB
.
Write
(
buf
)
}
wg
.
Done
()
}()
maddr
:=
newMultiaddr
(
t
,
"/ip4/127.0.0.1/tcp/4321"
)
cA
,
err
:=
Dial
(
maddr
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to dial"
)
}
buf
:=
make
([]
byte
,
1024
)
if
_
,
err
:=
cA
.
Write
([]
byte
(
"beep boop"
));
err
!=
nil
{
t
.
Fatal
(
"failed to write:"
,
err
)
}
if
_
,
err
:=
cA
.
Read
(
buf
);
err
!=
nil
{
t
.
Fatal
(
"failed to read:"
,
buf
,
err
)
}
if
!
bytes
.
Equal
(
buf
[
:
9
],
[]
byte
(
"beep boop"
))
{
t
.
Fatal
(
"failed to echo:"
,
buf
)
}
maddr2
:=
cA
.
RemoteMultiaddr
()
if
!
maddr2
.
Equal
(
maddr
)
{
t
.
Fatal
(
"remote multiaddr not equal:"
,
maddr
,
maddr2
)
}
cA
.
Close
()
wg
.
Wait
()
}
func
TestListen
(
t
*
testing
.
T
)
{
maddr
:=
newMultiaddr
(
t
,
"/ip4/127.0.0.1/tcp/4322"
)
listener
,
err
:=
Listen
(
maddr
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to listen"
)
}
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
go
func
()
{
cB
,
err
:=
listener
.
Accept
()
if
err
!=
nil
{
t
.
Fatal
(
"failed to accept"
)
}
if
!
cB
.
LocalMultiaddr
()
.
Equal
(
maddr
)
{
t
.
Fatal
(
"local multiaddr not equal:"
,
maddr
,
cB
.
LocalMultiaddr
())
}
// echo out
buf
:=
make
([]
byte
,
1024
)
for
{
_
,
err
:=
cB
.
Read
(
buf
)
if
err
!=
nil
{
break
}
cB
.
Write
(
buf
)
}
wg
.
Done
()
}()
cA
,
err
:=
net
.
Dial
(
"tcp"
,
"127.0.0.1:4322"
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to dial"
)
}
buf
:=
make
([]
byte
,
1024
)
if
_
,
err
:=
cA
.
Write
([]
byte
(
"beep boop"
));
err
!=
nil
{
t
.
Fatal
(
"failed to write:"
,
err
)
}
if
_
,
err
:=
cA
.
Read
(
buf
);
err
!=
nil
{
t
.
Fatal
(
"failed to read:"
,
buf
,
err
)
}
if
!
bytes
.
Equal
(
buf
[
:
9
],
[]
byte
(
"beep boop"
))
{
t
.
Fatal
(
"failed to echo:"
,
buf
)
}
maddr2
,
err
:=
FromNetAddr
(
cA
.
RemoteAddr
())
if
err
!=
nil
{
t
.
Fatal
(
"failed to convert"
,
err
)
}
if
!
maddr2
.
Equal
(
maddr
)
{
t
.
Fatal
(
"remote multiaddr not equal:"
,
maddr
,
maddr2
)
}
cA
.
Close
()
wg
.
Wait
()
}
func
TestListenAndDial
(
t
*
testing
.
T
)
{
maddr
:=
newMultiaddr
(
t
,
"/ip4/127.0.0.1/tcp/4323"
)
listener
,
err
:=
Listen
(
maddr
)
if
err
!=
nil
{
t
.
Fatal
(
"failed to listen"
)
}
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
go
func
()
{
cB
,
err
:=
listener
.
Accept
()
if
err
!=
nil
{
t
.
Fatal
(
"failed to accept"
)
}
if
!
cB
.
LocalMultiaddr
()
.
Equal
(
maddr
)
{
t
.
Fatal
(
"local multiaddr not equal:"
,
maddr
,
cB
.
LocalMultiaddr
())
}
// echo out
buf
:=
make
([]
byte
,
1024
)
for
{
_
,
err
:=
cB
.
Read
(
buf
)
if
err
!=
nil
{
break
}
cB
.
Write
(
buf
)
}
wg
.
Done
()
}()
cA
,
err
:=
Dial
(
newMultiaddr
(
t
,
"/ip4/127.0.0.1/tcp/4323"
))
if
err
!=
nil
{
t
.
Fatal
(
"failed to dial"
)
}
buf
:=
make
([]
byte
,
1024
)
if
_
,
err
:=
cA
.
Write
([]
byte
(
"beep boop"
));
err
!=
nil
{
t
.
Fatal
(
"failed to write:"
,
err
)
}
if
_
,
err
:=
cA
.
Read
(
buf
);
err
!=
nil
{
t
.
Fatal
(
"failed to read:"
,
buf
,
err
)
}
if
!
bytes
.
Equal
(
buf
[
:
9
],
[]
byte
(
"beep boop"
))
{
t
.
Fatal
(
"failed to echo:"
,
buf
)
}
maddr2
:=
cA
.
RemoteMultiaddr
()
if
!
maddr2
.
Equal
(
maddr
)
{
t
.
Fatal
(
"remote multiaddr not equal:"
,
maddr
,
maddr2
)
}
cA
.
Close
()
wg
.
Wait
()
}
This diff is collapsed.
Click to expand it.
daemon/daemon.go
View file @
917be904
...
...
@@ -15,6 +15,7 @@ import (
lock
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/camlistore/lock"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
)
var
log
=
u
.
Logger
(
"daemon"
)
...
...
@@ -51,7 +52,7 @@ func NewDaemonListener(ipfsnode *core.IpfsNode, addr ma.Multiaddr, confdir strin
return
nil
,
err
}
network
,
host
,
err
:=
ma
.
DialArgs
(
addr
)
network
,
host
,
err
:=
ma
net
.
DialArgs
(
addr
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
This diff is collapsed.
Click to expand it.
daemon/daemon_client.go
View file @
917be904
...
...
@@ -9,6 +9,7 @@ import (
"os"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
u
"github.com/jbenet/go-ipfs/util"
)
...
...
@@ -73,7 +74,7 @@ func SendCommand(command *Command, confdir string) error {
return
err
}
network
,
host
,
err
:=
ma
.
DialArgs
(
maddr
)
network
,
host
,
err
:=
ma
net
.
DialArgs
(
maddr
)
conn
,
err
:=
net
.
Dial
(
network
,
host
)
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
net/conn/conn.go
View file @
917be904
...
...
@@ -6,6 +6,7 @@ import (
msgio
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-msgio"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
spipe
"github.com/jbenet/go-ipfs/crypto/spipe"
peer
"github.com/jbenet/go-ipfs/peer"
...
...
@@ -58,7 +59,7 @@ func Dial(network string, peer *peer.Peer) (*Conn, error) {
return
nil
,
fmt
.
Errorf
(
"No address for network %s"
,
network
)
}
network
,
host
,
err
:=
ma
.
DialArgs
(
addr
)
network
,
host
,
err
:=
ma
net
.
DialArgs
(
addr
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -107,5 +108,5 @@ func (c *Conn) Close() error {
// NetConnMultiaddr returns the net.Conn's address, recast as a multiaddr.
// (consider moving this directly into the multiaddr package)
func
NetConnMultiaddr
(
nconn
net
.
Conn
)
(
ma
.
Multiaddr
,
error
)
{
return
ma
.
FromNetAddr
(
nconn
.
RemoteAddr
())
return
ma
net
.
FromNetAddr
(
nconn
.
RemoteAddr
())
}
This diff is collapsed.
Click to expand it.
net/swarm/conn.go
View file @
917be904
...
...
@@ -10,6 +10,7 @@ import (
msg
"github.com/jbenet/go-ipfs/net/message"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
)
// Open listeners for each network the swarm should listen on
...
...
@@ -37,7 +38,7 @@ func (s *Swarm) listen() error {
// Listen for new connections on the given multiaddr
func
(
s
*
Swarm
)
connListen
(
maddr
ma
.
Multiaddr
)
error
{
netstr
,
addr
,
err
:=
ma
.
DialArgs
(
maddr
)
netstr
,
addr
,
err
:=
ma
net
.
DialArgs
(
maddr
)
if
err
!=
nil
{
return
err
}
...
...
This diff is collapsed.
Click to expand it.
net/swarm/swarm_test.go
View file @
917be904
...
...
@@ -12,6 +12,7 @@ import (
context
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
msgio
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-msgio"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
mh
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
)
...
...
@@ -95,7 +96,7 @@ func TestSwarm(t *testing.T) {
if
a
==
nil
{
t
.
Fatal
(
"error setting up peer (addr is nil)"
,
peer
)
}
n
,
h
,
err
:=
ma
.
DialArgs
(
a
)
n
,
h
,
err
:=
ma
net
.
DialArgs
(
a
)
if
err
!=
nil
{
t
.
Fatal
(
"error getting dial args from addr"
)
}
...
...
This diff is collapsed.
Click to expand it.
server/http/http.go
View file @
917be904
...
...
@@ -7,6 +7,7 @@ import (
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gorilla/mux"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
manet
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
mh
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
core
"github.com/jbenet/go-ipfs/core"
...
...
@@ -24,7 +25,7 @@ func Serve(address ma.Multiaddr, node *core.IpfsNode) error {
r
.
PathPrefix
(
"/ipfs/"
)
.
Handler
(
handler
)
.
Methods
(
"GET"
)
http
.
Handle
(
"/"
,
r
)
_
,
host
,
err
:=
ma
.
DialArgs
(
address
)
_
,
host
,
err
:=
ma
net
.
DialArgs
(
address
)
if
err
!=
nil
{
return
err
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment