diff options
author | obscuren <geffobscura@gmail.com> | 2014-10-08 18:00:03 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-10-08 18:00:03 +0800 |
commit | 6de726f16cff6a79939cd9182424c7e9ef678044 (patch) | |
tree | b6ffdcecda68d0ed96cbe358a212bdd6995c0608 /peer.go | |
parent | b417766b36f46316cbae6fa42815f1a519e5f733 (diff) | |
download | dexon-6de726f16cff6a79939cd9182424c7e9ef678044.tar.gz dexon-6de726f16cff6a79939cd9182424c7e9ef678044.tar.zst dexon-6de726f16cff6a79939cd9182424c7e9ef678044.zip |
Protocol bump
Diffstat (limited to 'peer.go')
-rw-r--r-- | peer.go | 35 |
1 files changed, 16 insertions, 19 deletions
@@ -24,7 +24,7 @@ const ( // The size of the output buffer for writing messages outputBufferSize = 50 // Current protocol version - ProtocolVersion = 33 + ProtocolVersion = 34 // Current P2P version P2PVersion = 0 // Ethereum network version @@ -848,26 +848,23 @@ func (p *Peer) RlpData() []interface{} { return []interface{}{p.host, p.port, p.pubkey} } -func packAddr(address, port string) ([]byte, uint16) { - addr := strings.Split(address, ".") - a, _ := strconv.Atoi(addr[0]) - b, _ := strconv.Atoi(addr[1]) - c, _ := strconv.Atoi(addr[2]) - d, _ := strconv.Atoi(addr[3]) - host := []byte{byte(a), byte(b), byte(c), byte(d)} - prt, _ := strconv.Atoi(port) +func packAddr(address, _port string) (host []byte, port uint16) { + p, _ := strconv.Atoi(_port) + port = uint16(p) - return host, uint16(prt) + h := net.ParseIP(address) + if ip := h.To4(); ip != nil { + host = []byte(ip) + } else { + host = []byte(h) + } + + return } func unpackAddr(value *ethutil.Value, p uint64) string { - byts := value.Bytes() - a := strconv.Itoa(int(byts[0])) - b := strconv.Itoa(int(byts[1])) - c := strconv.Itoa(int(byts[2])) - d := strconv.Itoa(int(byts[3])) - host := strings.Join([]string{a, b, c, d}, ".") - port := strconv.Itoa(int(p)) - - return net.JoinHostPort(host, port) + host, _ := net.IP(value.Bytes()).MarshalText() + prt := strconv.Itoa(int(p)) + + return net.JoinHostPort(string(host), prt) } |