mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-25 06:06:44 +00:00
Change Uint to Int
Ports don't go below 0 and using uint is causing a lot of unnecessary conversions while have a few other downsides.
This commit is contained in:
parent
dd083aa34e
commit
3fd6dc6416
1 changed files with 9 additions and 9 deletions
|
|
@ -41,7 +41,7 @@ const nodeIDBits = 512
|
||||||
// The fields of Node may not be modified.
|
// The fields of Node may not be modified.
|
||||||
type Node struct {
|
type Node struct {
|
||||||
IP net.IP // len 4 for IPv4 or 16 for IPv6
|
IP net.IP // len 4 for IPv4 or 16 for IPv6
|
||||||
UDP, TCP uint16 // port numbers
|
UDP, TCP int16 // port numbers
|
||||||
ID NodeID // the node's public key
|
ID NodeID // the node's public key
|
||||||
|
|
||||||
// This is a cached copy of sha3(ID) which is used for node
|
// This is a cached copy of sha3(ID) which is used for node
|
||||||
|
|
@ -58,7 +58,7 @@ type Node struct {
|
||||||
|
|
||||||
// NewNode creates a new node. It is mostly meant to be used for
|
// NewNode creates a new node. It is mostly meant to be used for
|
||||||
// testing purposes.
|
// testing purposes.
|
||||||
func NewNode(id NodeID, ip net.IP, udpPort, tcpPort uint16) *Node {
|
func NewNode(id NodeID, ip net.IP, udpPort, tcpPort int16) *Node {
|
||||||
if ipv4 := ip.To4(); ipv4 != nil {
|
if ipv4 := ip.To4(); ipv4 != nil {
|
||||||
ip = ipv4
|
ip = ipv4
|
||||||
}
|
}
|
||||||
|
|
@ -72,7 +72,7 @@ func NewNode(id NodeID, ip net.IP, udpPort, tcpPort uint16) *Node {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) addr() *net.UDPAddr {
|
func (n *Node) addr() *net.UDPAddr {
|
||||||
return &net.UDPAddr{IP: n.IP, Port: int(n.UDP)}
|
return &net.UDPAddr{IP: n.IP, Port: n.UDP}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incomplete returns true for nodes with no IP address.
|
// Incomplete returns true for nodes with no IP address.
|
||||||
|
|
@ -105,11 +105,11 @@ func (n *Node) String() string {
|
||||||
if n.Incomplete() {
|
if n.Incomplete() {
|
||||||
u.Host = fmt.Sprintf("%x", n.ID[:])
|
u.Host = fmt.Sprintf("%x", n.ID[:])
|
||||||
} else {
|
} else {
|
||||||
addr := net.TCPAddr{IP: n.IP, Port: int(n.TCP)}
|
addr := net.TCPAddr{IP: n.IP, Port: n.TCP}
|
||||||
u.User = url.User(fmt.Sprintf("%x", n.ID[:]))
|
u.User = url.User(fmt.Sprintf("%x", n.ID[:]))
|
||||||
u.Host = addr.String()
|
u.Host = addr.String()
|
||||||
if n.UDP != n.TCP {
|
if n.UDP != n.TCP {
|
||||||
u.RawQuery = "discport=" + strconv.Itoa(int(n.UDP))
|
u.RawQuery = "discport=" + strconv.Itoa(n.UDP)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return u.String()
|
return u.String()
|
||||||
|
|
@ -155,7 +155,7 @@ func parseComplete(rawurl string) (*Node, error) {
|
||||||
var (
|
var (
|
||||||
id NodeID
|
id NodeID
|
||||||
ip net.IP
|
ip net.IP
|
||||||
tcpPort, udpPort uint64
|
tcpPort, udpPort int64
|
||||||
)
|
)
|
||||||
u, err := url.Parse(rawurl)
|
u, err := url.Parse(rawurl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -184,18 +184,18 @@ func parseComplete(rawurl string) (*Node, error) {
|
||||||
ip = ipv4
|
ip = ipv4
|
||||||
}
|
}
|
||||||
// Parse the port numbers.
|
// Parse the port numbers.
|
||||||
if tcpPort, err = strconv.ParseUint(port, 10, 16); err != nil {
|
if tcpPort, err = strconv.ParseInt(port, 10, 16); err != nil {
|
||||||
return nil, errors.New("invalid port")
|
return nil, errors.New("invalid port")
|
||||||
}
|
}
|
||||||
udpPort = tcpPort
|
udpPort = tcpPort
|
||||||
qv := u.Query()
|
qv := u.Query()
|
||||||
if qv.Get("discport") != "" {
|
if qv.Get("discport") != "" {
|
||||||
udpPort, err = strconv.ParseUint(qv.Get("discport"), 10, 16)
|
udpPort, err = strconv.ParseInt(qv.Get("discport"), 10, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.New("invalid discport in query")
|
return nil, errors.New("invalid discport in query")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NewNode(id, ip, uint16(udpPort), uint16(tcpPort)), nil
|
return NewNode(id, ip, udpPort, tcpPort), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MustParseNode parses a node URL. It panics if the URL is not valid.
|
// MustParseNode parses a node URL. It panics if the URL is not valid.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue