From 6bbe575500eaaf53b254822521bde34297193f46 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Thu, 18 Jun 2015 18:15:35 -0700 Subject: [PATCH 1/3] update go-multiaddr-net with a nil check works around off nil conn failure: - https://travis-ci.org/ipfs/go-ipfs/jobs/67385491 License: MIT Signed-off-by: Juan Batiz-Benet --- Godeps/Godeps.json | 2 +- .../_workspace/src/github.com/jbenet/go-multiaddr-net/net.go | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 84980597a..5feff49be 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -155,7 +155,7 @@ }, { "ImportPath": "github.com/jbenet/go-multiaddr-net", - "Rev": "62d4c740c29c00a47ef7f670208022940d245eef" + "Rev": "b9c1a08db09925939424c826885adfd753a8cd13" }, { "ImportPath": "github.com/jbenet/go-multihash", diff --git a/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net.go b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net.go index 0f991f06a..b7b1f5373 100644 --- a/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net.go +++ b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net.go @@ -26,6 +26,9 @@ type Conn interface { // WrapNetConn wraps a net.Conn object with a Multiaddr // friendly Conn. func WrapNetConn(nconn net.Conn) (Conn, error) { + if nconn == nil { + return nil, fmt.Errorf("failed to convert nconn.LocalAddr: nil") + } laddr, err := FromNetAddr(nconn.LocalAddr()) if err != nil { From 1363790f704e5a4c02f99ea783c8493435261292 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Thu, 18 Jun 2015 18:19:42 -0700 Subject: [PATCH 2/3] remove duplicate Godeps.json entry License: MIT Signed-off-by: Juan Batiz-Benet --- Godeps/Godeps.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 5feff49be..78d1bdcf9 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -271,11 +271,6 @@ { "ImportPath": "gopkg.in/tomb.v1", "Rev": "dd632973f1e7218eb1089048e0798ec9ae7dceb8" - }, - { - "ImportPath": "github.com/chriscool/go-sleep", - "Rev": "743ab5f1bb487edf1772bc29ca0bdf572b40785e" } - ] } From 1c972fed0f72fa85a92ac34451dae1bdcb3368cf Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Fri, 19 Jun 2015 00:15:10 -0700 Subject: [PATCH 3/3] updated go-multiaddr-net with tests License: MIT Signed-off-by: Juan Batiz-Benet --- Godeps/Godeps.json | 2 +- .../go-multiaddr-net/multiaddr/.gitignore | 1 + .../jbenet/go-multiaddr-net/net_test.go | 69 +++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/multiaddr/.gitignore diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 78d1bdcf9..4ee07c958 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -155,7 +155,7 @@ }, { "ImportPath": "github.com/jbenet/go-multiaddr-net", - "Rev": "b9c1a08db09925939424c826885adfd753a8cd13" + "Rev": "6b29a00b65526d23f534813eb5bfa64dfa281e4a" }, { "ImportPath": "github.com/jbenet/go-multihash", diff --git a/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/multiaddr/.gitignore b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/multiaddr/.gitignore new file mode 100644 index 000000000..e4dcb09f3 --- /dev/null +++ b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/multiaddr/.gitignore @@ -0,0 +1 @@ +multiaddr diff --git a/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net_test.go b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net_test.go index 0711efac7..ecc081387 100644 --- a/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net_test.go +++ b/Godeps/_workspace/src/github.com/jbenet/go-multiaddr-net/net_test.go @@ -365,6 +365,75 @@ func TestIP6LinkLocal(t *testing.T) { } } +func TestConvertNetAddr(t *testing.T) { + m1 := newMultiaddr(t, "/ip4/1.2.3.4/tcp/4001") + + n1, err := ToNetAddr(m1) + if err != nil { + t.Fatal(err) + } + + m2, err := FromNetAddr(n1) + if err != nil { + t.Fatal(err) + } + + if m1.String() != m2.String() { + t.Fatal("ToNetAddr + FromNetAddr did not work") + } +} + +func TestWrapNetConn(t *testing.T) { + // test WrapNetConn nil + if _, err := WrapNetConn(nil); err == nil { + t.Error("WrapNetConn(nil) should return an error") + } + + checkErr := func(err error, s string) { + if err != nil { + t.Fatal(s, err) + } + } + + listener, err := net.Listen("tcp", "127.0.0.1:0") + checkErr(err, "failed to listen") + + var wg sync.WaitGroup + defer wg.Wait() + wg.Add(1) + go func() { + defer wg.Done() + cB, err := listener.Accept() + checkErr(err, "failed to accept") + cB.Close() + }() + + cA, err := net.Dial("tcp", listener.Addr().String()) + checkErr(err, "failed to dial") + defer cA.Close() + + lmaddr, err := FromNetAddr(cA.LocalAddr()) + checkErr(err, "failed to get local addr") + rmaddr, err := FromNetAddr(cA.RemoteAddr()) + checkErr(err, "failed to get remote addr") + + mcA, err := WrapNetConn(cA) + checkErr(err, "failed to wrap conn") + + if mcA.LocalAddr().String() != cA.LocalAddr().String() { + t.Error("wrapped conn local addr differs") + } + if mcA.RemoteAddr().String() != cA.RemoteAddr().String() { + t.Error("wrapped conn remote addr differs") + } + if mcA.LocalMultiaddr().String() != lmaddr.String() { + t.Error("wrapped conn local maddr differs") + } + if mcA.RemoteMultiaddr().String() != rmaddr.String() { + t.Error("wrapped conn remote maddr differs") + } +} + func TestAddrMatch(t *testing.T) { test := func(m ma.Multiaddr, input, expect []ma.Multiaddr) {