lnwire: add encoding/decoding for DNS addr
Co-authored-by: Elle Mouton <elle.mouton@gmail.com>
This commit is contained in:
1 parent
a0057c2026
commit
670b26ba3d
4 files changed
+117
-9
No files matched your search
@@ -35,6 +35,9 @@ var (
|
||||
// ErrNilOpaqueAddrs is returned when the supplied address is nil.
|
||||
ErrNilOpaqueAddrs = errors.New("cannot write nil OpaqueAddrs")
|
||||
|
||||
// ErrNilDNSAddress is returned when the supplied address is nil.
|
||||
ErrNilDNSAddress = errors.New("cannot write nil DNS address")
|
||||
|
||||
// ErrNilPublicKey is returned when a nil pubkey is used.
|
||||
ErrNilPublicKey = errors.New("cannot write nil pubkey")
|
||||
|
||||
@@ -364,6 +367,28 @@ func WriteOnionAddr(buf *bytes.Buffer, addr *tor.OnionAddr) error {
|
||||
return WriteUint16(buf, uint16(addr.Port))
|
||||
}
|
||||
|
||||
// WriteDNSAddress appends the DNS address to the provided buffer.
|
||||
func WriteDNSAddress(buf *bytes.Buffer, addr *DNSAddress) error {
|
||||
if addr == nil {
|
||||
return ErrNilDNSAddress
|
||||
}
|
||||
|
||||
// Write the descriptor, the hostname length, and the hostname.
|
||||
if _, err := buf.Write([]byte{byte(dnsAddr)}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := WriteUint8(buf, uint8(len(addr.Hostname))); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := buf.WriteString(addr.Hostname); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return WriteUint16(buf, addr.Port)
|
||||
}
|
||||
|
||||
// WriteOpaqueAddrs appends the payload of the given OpaqueAddrs to buffer.
|
||||
func WriteOpaqueAddrs(buf *bytes.Buffer, addr *OpaqueAddrs) error {
|
||||
if addr == nil {
|
||||
@@ -397,6 +422,10 @@ func WriteNetAddrs(buf *bytes.Buffer, addresses []net.Addr) error {
|
||||
if err := WriteOpaqueAddrs(addrBuf, a); err != nil {
|
||||
return err
|
||||
}
|
||||
case *DNSAddress:
|
||||
if err := WriteDNSAddress(addrBuf, a); err != nil {
|
||||
return err
|
||||
}
|
||||
default:
|
||||
return ErrNilNetAddress
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user