From 2c6f864b5554eb1ff772c82239c06650dc135153 Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Thu, 3 Nov 2016 20:16:37 -0500 Subject: [PATCH] wire: Change NewNetAddress to accept a *net.TCPConn. Rather than accepting a net.Addr interface and returning an error when it's not specifically a *net.TCPConn, just accept a *net.TCPConn directly so the compiler will assert it. Also, remove the error return since it can no longer occur. --- wire/message_test.go | 10 ++-------- wire/msgaddr_test.go | 7 ++----- wire/msgversion_test.go | 10 ++-------- wire/netaddress.go | 18 ++---------------- wire/netaddress_test.go | 17 +---------------- 5 files changed, 9 insertions(+), 53 deletions(-) diff --git a/wire/message_test.go b/wire/message_test.go index 811e5256c..e5f338b08 100644 --- a/wire/message_test.go +++ b/wire/message_test.go @@ -41,16 +41,10 @@ func TestMessage(t *testing.T) { // MsgVersion. addrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 8333} - you, err := NewNetAddress(addrYou, SFNodeNetwork) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } + you := NewNetAddress(addrYou, SFNodeNetwork) you.Timestamp = time.Time{} // Version message has zero value timestamp. addrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333} - me, err := NewNetAddress(addrMe, SFNodeNetwork) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } + me := NewNetAddress(addrMe, SFNodeNetwork) me.Timestamp = time.Time{} // Version message has zero value timestamp. msgVersion := NewMsgVersion(me, you, 123123, 0) diff --git a/wire/msgaddr_test.go b/wire/msgaddr_test.go index dba444836..649cd8af6 100644 --- a/wire/msgaddr_test.go +++ b/wire/msgaddr_test.go @@ -39,11 +39,8 @@ func TestAddr(t *testing.T) { // Ensure NetAddresses are added properly. tcpAddr := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333} - na, err := NewNetAddress(tcpAddr, SFNodeNetwork) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } - err = msg.AddAddress(na) + na := NewNetAddress(tcpAddr, SFNodeNetwork) + err := msg.AddAddress(na) if err != nil { t.Errorf("AddAddress: %v", err) } diff --git a/wire/msgversion_test.go b/wire/msgversion_test.go index 0290c4e44..92f41f056 100644 --- a/wire/msgversion_test.go +++ b/wire/msgversion_test.go @@ -23,15 +23,9 @@ func TestVersion(t *testing.T) { // Create version message data. lastBlock := int32(234234) tcpAddrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333} - me, err := NewNetAddress(tcpAddrMe, SFNodeNetwork) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } + me := NewNetAddress(tcpAddrMe, SFNodeNetwork) tcpAddrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 8333} - you, err := NewNetAddress(tcpAddrYou, SFNodeNetwork) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } + you := NewNetAddress(tcpAddrYou, SFNodeNetwork) nonce, err := RandomUint64() if err != nil { t.Errorf("RandomUint64: error generating nonce: %v", err) diff --git a/wire/netaddress.go b/wire/netaddress.go index 04fef9f44..05b335442 100644 --- a/wire/netaddress.go +++ b/wire/netaddress.go @@ -6,16 +6,11 @@ package wire import ( "encoding/binary" - "errors" "io" "net" "time" ) -// ErrInvalidNetAddr describes an error that indicates the caller didn't specify -// a TCP address as required. -var ErrInvalidNetAddr = errors.New("provided net.Addr is not a net.TCPAddr") - // maxNetAddressPayload returns the max payload size for a bitcoin NetAddress // based on the protocol version. func maxNetAddressPayload(pver uint32) uint32 { @@ -85,17 +80,8 @@ func NewNetAddressIPPort(ip net.IP, port uint16, services ServiceFlag) *NetAddre // NewNetAddress returns a new NetAddress using the provided TCP address and // supported services with defaults for the remaining fields. -// -// Note that addr must be a net.TCPAddr. An ErrInvalidNetAddr is returned -// if it is not. -func NewNetAddress(addr net.Addr, services ServiceFlag) (*NetAddress, error) { - tcpAddr, ok := addr.(*net.TCPAddr) - if !ok { - return nil, ErrInvalidNetAddr - } - - na := NewNetAddressIPPort(tcpAddr.IP, uint16(tcpAddr.Port), services) - return na, nil +func NewNetAddress(addr *net.TCPAddr, services ServiceFlag) *NetAddress { + return NewNetAddressIPPort(addr.IP, uint16(addr.Port), services) } // readNetAddress reads an encoded NetAddress from r depending on the protocol diff --git a/wire/netaddress_test.go b/wire/netaddress_test.go index ed7bed784..128a7fbce 100644 --- a/wire/netaddress_test.go +++ b/wire/netaddress_test.go @@ -21,14 +21,7 @@ func TestNetAddress(t *testing.T) { port := 8333 // Test NewNetAddress. - tcpAddr := &net.TCPAddr{ - IP: ip, - Port: port, - } - na, err := NewNetAddress(tcpAddr, 0) - if err != nil { - t.Errorf("NewNetAddress: %v", err) - } + na := NewNetAddress(&net.TCPAddr{IP: ip, Port: port}, 0) // Ensure we get the same ip, port, and services back out. if !na.IP.Equal(ip) { @@ -76,14 +69,6 @@ func TestNetAddress(t *testing.T) { "protocol version %d - got %v, want %v", pver, maxPayload, wantPayload) } - - // Check for expected failure on wrong address type. - udpAddr := &net.UDPAddr{} - _, err = NewNetAddress(udpAddr, 0) - if err != ErrInvalidNetAddr { - t.Errorf("NewNetAddress: expected error not received - "+ - "got %v, want %v", err, ErrInvalidNetAddr) - } } // TestNetAddressWire tests the NetAddress wire encode and decode for various