watchtower/multi: send connection features + chain hash in Init

This commit is contained in:
Conner Fromknecht committed 2019-02-06 20:09:19 -08:00
1 parent eaea92e2cf
commit 4dbade64dd
6 files changed
+149 -67

No files matched your search

+30
View File
@@ -6,8 +6,10 @@ import (
"io"
"github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcd/chaincfg/chainhash"
"github.com/btcsuite/btcd/wire"
"github.com/lightningnetwork/lnd/lnwallet"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/watchtower/blob"
)
@@ -86,6 +88,20 @@ func WriteElement(w io.Writer, element interface{}) error {
return err
}
case chainhash.Hash:
if _, err := w.Write(e[:]); err != nil {
return err
}
case *lnwire.RawFeatureVector:
if e == nil {
return fmt.Errorf("cannot write nil feature vector")
}
if err := e.Encode(w); err != nil {
return err
}
case *btcec.PublicKey:
if e == nil {
return fmt.Errorf("cannot write nil pubkey")
@@ -192,6 +208,20 @@ func ReadElement(r io.Reader, element interface{}) error {
}
*e = ErrorCode(binary.BigEndian.Uint16(b[:]))
case *chainhash.Hash:
if _, err := io.ReadFull(r, e[:]); err != nil {
return err
}
case **lnwire.RawFeatureVector:
f := lnwire.NewRawFeatureVector()
err := f.Decode(r)
if err != nil {
return err
}
*e = f
case **btcec.PublicKey:
var b [btcec.PubKeyBytesLenCompressed]byte
if _, err := io.ReadFull(r, b[:]); err != nil {