lnwire: add encoding/decoding for DNS addr

Co-authored-by: Elle Mouton <elle.mouton@gmail.com>
This commit is contained in:
Elle Mouton authored and Mohamed Awnallah committed 2025-09-02 17:51:31 +00:00
1 parent a0057c2026
commit 670b26ba3d
4 files changed
+117 -9

No files matched your search

+29
View File
@@ -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
}