From 863ad2bea8ef8135aa4e66a04221070fd1019115 Mon Sep 17 00:00:00 2001 From: Anton Evangelatov Date: Thu, 22 Feb 2018 11:08:11 +0100 Subject: [PATCH] p2p: simplify tcpPipe function --- p2p/rlpx_test.go | 65 ++++++++++++++---------------------------------- 1 file changed, 19 insertions(+), 46 deletions(-) diff --git a/p2p/rlpx_test.go b/p2p/rlpx_test.go index 8a378db122..bca4604021 100644 --- a/p2p/rlpx_test.go +++ b/p2p/rlpx_test.go @@ -604,55 +604,28 @@ func TestHandshakeForwardCompatibility(t *testing.T) { // tcpPipe creates an in process full duplex pipe based on a localhost TCP socket func tcpPipe() (net.Conn, net.Conn, error) { - type result struct { - conn net.Conn - err error + l, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + return nil, nil, err } + defer l.Close() - cl := make(chan result) - cd := make(chan result) + var aconn net.Conn + aerr := make(chan error, 1) + go func() { + var err error + aconn, err = l.Accept() + aerr <- err + }() - start := make(chan net.Addr) - - go func(res chan result, start chan net.Addr) { - // resolve - addr, err := net.ResolveTCPAddr("tcp", "localhost:0") - if err != nil { - res <- result{err: err} - return - } - // listen - l, err := net.ListenTCP("tcp", addr) - if err != nil { - res <- result{err: err} - return - } - start <- l.Addr() - c, err := l.AcceptTCP() - if err != nil { - res <- result{err: err} - return - } - res <- result{conn: c} - }(cl, start) - - go func(res chan result, start chan net.Addr) { - addr := <-start - c, err := net.DialTCP("tcp", nil, addr.(*net.TCPAddr)) - if err != nil { - res <- result{err: err} - return - } - res <- result{conn: c} - }(cd, start) - - a := <-cl - if a.err != nil { - return nil, nil, a.err + dconn, err := net.Dial("tcp", l.Addr().String()) + if err != nil { + <-aerr + return nil, nil, err } - b := <-cd - if b.err != nil { - return nil, nil, b.err + if err := <-aerr; err != nil { + dconn.Close() + return nil, nil, err } - return a.conn, b.conn, nil + return aconn, dconn, nil }