track changes to peer records in -core

This commit is contained in:
Yusef Napora 2020-01-22 10:23:47 -05:00 committed by vyzo
parent 5b0ec14ea7
commit 919d81fd91
3 changed files with 85 additions and 74 deletions

View File

@ -3,6 +3,7 @@ package pubsub
import (
"context"
"fmt"
"github.com/libp2p/go-libp2p-core/record"
"math/rand"
"time"
@ -13,7 +14,6 @@ import (
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p-core/peerstore"
"github.com/libp2p/go-libp2p-core/protocol"
"github.com/libp2p/go-libp2p-core/routing"
)
const (
@ -93,7 +93,7 @@ type GossipSubRouter struct {
type connectInfo struct {
p peer.ID
srr *routing.SignedRoutingState
spr *record.Envelope
}
func (gs *GossipSubRouter) Protocols() []protocol.ID {
@ -306,19 +306,23 @@ func (gs *GossipSubRouter) pxConnect(peers []*pb.PeerInfo) {
continue
}
var srr *routing.SignedRoutingState
var err error
if pi.SignedAddrs != nil {
var srr *record.Envelope
if pi.SignedPeerRecord != nil {
// the peer sent us a signed record; ensure that it is valid
srr, err = routing.UnmarshalSignedRoutingState(pi.SignedAddrs)
envelope, r, err := record.ConsumeEnvelope(pi.SignedPeerRecord, peer.PeerRecordEnvelopeDomain)
if err != nil {
log.Warningf("error unmarshalling routing record obtained through px: %s", err)
continue
}
if srr.PeerID != p {
log.Warningf("bogus routing record obtained through px: peer ID %s doesn't match expected peer %s", srr.PeerID, p)
rec, ok := r.(*peer.PeerRecord)
if !ok {
log.Warnf("bogus routing record obtained through px: envelope payload is not PeerRecord")
}
if rec.PeerID != p {
log.Warnf("bogus routing record obtained through px: peer ID %s doesn't match expected peer %s", rec.PeerID, p)
continue
}
srr = envelope
}
toconnect = append(toconnect, connectInfo{p, srr})
@ -347,8 +351,12 @@ func (gs *GossipSubRouter) connector() {
}
log.Debugf("connecting to %s", ci.p)
if ci.srr != nil {
gs.p.host.Peerstore().AddCertifiedAddrs(ci.srr, peerstore.TempAddrTTL)
cab, ok := peerstore.GetCertifiedAddrBook(gs.p.host.Peerstore())
if ok && ci.spr != nil {
err := cab.ProcessPeerRecord(ci.spr, peerstore.TempAddrTTL)
if err != nil {
log.Debugf("error processing peer record: %s", err)
}
}
ctx, cancel := context.WithTimeout(gs.p.ctx, GossipSubConnectionTimeout)
@ -822,21 +830,24 @@ func (gs *GossipSubRouter) makePrune(p peer.ID, topic string) *pb.ControlPrune {
return p != xp
})
cab, peerstoreSupportsSignedAddrs := peerstore.GetCertifiedAddrBook(gs.p.host.Peerstore())
px := make([]*pb.PeerInfo, 0, len(peers))
for _, p := range peers {
// see if we have a signed address record to send back; if we don't, just send
// see if we have a signed peer record to send back; if we don't, just send
// the peer ID and let the pruned peer find them in the DHT -- we can't trust
// unsigned address records through px anyway.
srr := gs.p.host.Peerstore().SignedRoutingState(p)
var saddrs []byte
var err error
if srr != nil {
saddrs, err = srr.Marshal()
if err != nil {
log.Warningf("error marshaling signed routing state for %s: %s", p, err)
var recordBytes []byte
if peerstoreSupportsSignedAddrs {
spr := cab.GetPeerRecord(p)
var err error
if spr != nil {
recordBytes, err = spr.Marshal()
if err != nil {
log.Warnf("error marshaling signed peer record for %s: %s", p, err)
}
}
}
px = append(px, &pb.PeerInfo{PeerID: []byte(p), SignedAddrs: saddrs})
px = append(px, &pb.PeerInfo{PeerID: []byte(p), SignedPeerRecord: recordBytes})
}
return &pb.ControlPrune{TopicID: &topic, Peers: px}

View File

@ -589,7 +589,7 @@ func (m *ControlPrune) GetPeers() []*PeerInfo {
type PeerInfo struct {
PeerID []byte `protobuf:"bytes,1,opt,name=peerID" json:"peerID,omitempty"`
SignedAddrs []byte `protobuf:"bytes,2,opt,name=signedAddrs" json:"signedAddrs,omitempty"`
SignedPeerRecord []byte `protobuf:"bytes,2,opt,name=signedPeerRecord" json:"signedPeerRecord,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -635,9 +635,9 @@ func (m *PeerInfo) GetPeerID() []byte {
return nil
}
func (m *PeerInfo) GetSignedAddrs() []byte {
func (m *PeerInfo) GetSignedPeerRecord() []byte {
if m != nil {
return m.SignedAddrs
return m.SignedPeerRecord
}
return nil
}
@ -835,48 +835,48 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 650 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0xc7, 0xd9, 0x38, 0xa9, 0xe3, 0x89, 0x5b, 0xa2, 0x05, 0x15, 0x13, 0x55, 0x51, 0x64, 0x24,
0x14, 0xa0, 0xf8, 0x10, 0x90, 0xb8, 0x20, 0x44, 0x68, 0x22, 0x12, 0xa1, 0xb6, 0xd1, 0xb6, 0x52,
0xc5, 0xd1, 0x8e, 0xb7, 0x8d, 0xd5, 0xc6, 0x36, 0xfe, 0x28, 0xea, 0x1b, 0x70, 0x87, 0x67, 0xe1,
0x19, 0x38, 0x70, 0xe0, 0x11, 0x50, 0x6f, 0xbc, 0x05, 0xda, 0xd9, 0x4d, 0xe2, 0xa4, 0x1f, 0x70,
0xca, 0xec, 0xec, 0xef, 0x3f, 0xf3, 0x9f, 0x71, 0x16, 0x8c, 0x24, 0x1e, 0x3b, 0x71, 0x12, 0x65,
0x11, 0x35, 0xe2, 0xdc, 0x4b, 0x73, 0xcf, 0x89, 0x3d, 0xfb, 0x0f, 0x01, 0x8d, 0x8d, 0x76, 0xe8,
0x6b, 0x58, 0x4f, 0x73, 0x2f, 0x1d, 0x27, 0x41, 0x9c, 0x05, 0x51, 0x98, 0x5a, 0xa4, 0xa5, 0xb5,
0x6b, 0x9d, 0x4d, 0x67, 0x8e, 0x3a, 0x6c, 0xb4, 0xe3, 0x1c, 0xe4, 0xde, 0x7e, 0x9c, 0xa5, 0x6c,
0x19, 0xa6, 0xdb, 0xa0, 0xc7, 0xb9, 0x77, 0x16, 0xa4, 0x13, 0xab, 0x84, 0x3a, 0x5a, 0xd0, 0xed,
0xf2, 0x34, 0x75, 0x4f, 0x38, 0x9b, 0x21, 0xf4, 0x05, 0xe8, 0xe3, 0x28, 0xcc, 0x92, 0xe8, 0xcc,
0xd2, 0x5a, 0xa4, 0x5d, 0xeb, 0x3c, 0x2c, 0xd0, 0x3b, 0xf2, 0x66, 0x2e, 0x52, 0x64, 0xa3, 0x0b,
0xba, 0x6a, 0x4e, 0xb7, 0xc0, 0x50, 0xed, 0x3d, 0x6e, 0x91, 0x16, 0x69, 0x57, 0xd9, 0x22, 0x41,
0x2d, 0xd0, 0xb3, 0x28, 0x0e, 0xc6, 0x81, 0x6f, 0x95, 0x5a, 0xa4, 0x6d, 0xb0, 0xd9, 0xd1, 0xfe,
0x4a, 0x40, 0x57, 0x75, 0x29, 0x85, 0xf2, 0x71, 0x12, 0x4d, 0x51, 0x6e, 0x32, 0x8c, 0x45, 0xce,
0x77, 0x33, 0x17, 0x65, 0x26, 0xc3, 0x98, 0xde, 0x87, 0x4a, 0xca, 0x3f, 0x85, 0x11, 0x3a, 0x35,
0x99, 0x3c, 0xd0, 0x06, 0x54, 0xb1, 0xe8, 0xb0, 0x97, 0x5a, 0xe5, 0x96, 0xd6, 0x36, 0xd8, 0xfc,
0x8c, 0xee, 0x82, 0x93, 0xd0, 0xcd, 0xf2, 0x84, 0x5b, 0x15, 0x54, 0x2d, 0x12, 0xb4, 0x0e, 0xda,
0x29, 0xbf, 0xb0, 0xd6, 0x30, 0x2f, 0x42, 0xfb, 0x27, 0x81, 0x8d, 0xe5, 0xa1, 0xe9, 0x73, 0xa8,
0x04, 0x13, 0xf7, 0x9c, 0xab, 0x8f, 0xf0, 0xe0, 0xea, 0x7a, 0x86, 0x03, 0xf7, 0x9c, 0x33, 0x49,
0x21, 0xfe, 0xd9, 0x0d, 0x33, 0xb5, 0xfb, 0xeb, 0xf0, 0x23, 0x37, 0xcc, 0x98, 0xa4, 0x04, 0x7e,
0x92, 0xb8, 0xc7, 0x99, 0xa5, 0xdd, 0x84, 0xbf, 0x17, 0xd7, 0x4c, 0x52, 0x02, 0x8f, 0x93, 0x3c,
0xe4, 0x38, 0xe8, 0xb5, 0xf8, 0x48, 0x5c, 0x33, 0x49, 0xd9, 0x03, 0x30, 0x8b, 0x1e, 0xe7, 0x9f,
0x63, 0xd8, 0xc3, 0x5d, 0xcf, 0x3e, 0xc7, 0xb0, 0x47, 0x9b, 0x00, 0x53, 0x39, 0xb0, 0x58, 0x63,
0x09, 0xd7, 0x58, 0xc8, 0xd8, 0xce, 0xa2, 0x92, 0xb0, 0xbf, 0xc2, 0x93, 0x2b, 0x7c, 0x7b, 0xce,
0xa3, 0xff, 0x9b, 0x3b, 0xdb, 0x07, 0x73, 0x12, 0xad, 0xdf, 0xe2, 0xf1, 0x09, 0x54, 0x62, 0xce,
0x93, 0x54, 0xad, 0xf6, 0x5e, 0x61, 0xf8, 0x11, 0xe7, 0xc9, 0x30, 0x3c, 0x8e, 0x98, 0x24, 0xec,
0x1e, 0x54, 0x67, 0x29, 0xba, 0x09, 0x6b, 0x22, 0xa9, 0xea, 0x99, 0x4c, 0x9d, 0x68, 0x0b, 0x6a,
0xe2, 0xaf, 0xc0, 0xfd, 0xae, 0xef, 0x63, 0x51, 0x71, 0x59, 0x4c, 0xd9, 0xdf, 0x35, 0xb8, 0x7b,
0x28, 0x9a, 0xf7, 0xb8, 0x7c, 0x5f, 0x51, 0x22, 0xfe, 0x97, 0xa1, 0x3b, 0xe5, 0xca, 0x1b, 0xc6,
0xf4, 0x15, 0x94, 0xdd, 0x3c, 0x9b, 0x60, 0x89, 0x5a, 0xe7, 0x51, 0xc1, 0xd7, 0x8a, 0xda, 0xe9,
0xe6, 0xd9, 0x04, 0xdf, 0x2c, 0x0a, 0xe8, 0x4b, 0xd0, 0x78, 0x38, 0x56, 0x0f, 0xcf, 0xbe, 0x45,
0xd7, 0x0f, 0xc7, 0x28, 0x13, 0x78, 0xe3, 0x0b, 0x81, 0xea, 0xac, 0x10, 0x7d, 0x0b, 0xe5, 0x69,
0xe4, 0x4b, 0x3f, 0x1b, 0x9d, 0xed, 0xff, 0xe8, 0x8d, 0xc1, 0x6e, 0xe4, 0x73, 0x86, 0x4a, 0x31,
0xd1, 0x29, 0xbf, 0x90, 0x5b, 0x35, 0x19, 0xc6, 0xf6, 0x63, 0xd9, 0x41, 0x50, 0xb4, 0x0a, 0xe5,
0xbd, 0xfd, 0xbd, 0x7e, 0xfd, 0x0e, 0xd5, 0x41, 0xfb, 0xd0, 0xff, 0x58, 0x27, 0x22, 0x38, 0xda,
0x3f, 0xac, 0x97, 0x1a, 0xdf, 0x08, 0xe8, 0xca, 0x1b, 0x7d, 0xb3, 0xe4, 0xe4, 0xe9, 0xbf, 0xa7,
0x11, 0xbf, 0x05, 0x1f, 0x5b, 0x60, 0x9c, 0xf2, 0x8b, 0x81, 0x9b, 0x4e, 0xf8, 0xcc, 0xcc, 0x22,
0x61, 0x3f, 0xc3, 0x46, 0x2b, 0x86, 0xd6, 0xc1, 0x38, 0x18, 0x74, 0x59, 0xbf, 0xb7, 0x6c, 0xeb,
0x9d, 0xf9, 0xe3, 0xb2, 0x49, 0x7e, 0x5d, 0x36, 0xc9, 0xef, 0xcb, 0x26, 0xf9, 0x1b, 0x00, 0x00,
0xff, 0xff, 0xe3, 0x53, 0xd4, 0xac, 0x6d, 0x05, 0x00, 0x00,
// 655 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x6e, 0xd3, 0x4e,
0x10, 0xc7, 0x7f, 0x1b, 0x27, 0x75, 0x3c, 0x75, 0xfb, 0x8b, 0x16, 0x54, 0x4c, 0x54, 0x45, 0x91,
0x91, 0x50, 0x28, 0xc5, 0x87, 0x80, 0xc4, 0x05, 0x21, 0x4a, 0x13, 0x91, 0x08, 0xb5, 0x8d, 0xb6,
0x95, 0x2a, 0x8e, 0xb6, 0xb3, 0x6d, 0xac, 0x36, 0x5e, 0xe3, 0x3f, 0x45, 0x7d, 0x03, 0xee, 0xf0,
0x2c, 0x3c, 0x03, 0x07, 0x0e, 0x3c, 0x02, 0xea, 0x8d, 0xb7, 0x40, 0x3b, 0xde, 0x38, 0x4e, 0xd3,
0x16, 0x4e, 0x9e, 0x1d, 0x7f, 0xbe, 0x33, 0xdf, 0x19, 0x7b, 0xc1, 0x88, 0x23, 0xdf, 0x89, 0x62,
0x91, 0x0a, 0x6a, 0x44, 0x99, 0x97, 0x64, 0x9e, 0x13, 0x79, 0xf6, 0x6f, 0x02, 0x1a, 0x1b, 0xed,
0xd2, 0x57, 0xb0, 0x96, 0x64, 0x5e, 0xe2, 0xc7, 0x41, 0x94, 0x06, 0x22, 0x4c, 0x2c, 0xd2, 0xd6,
0x3a, 0xab, 0xdd, 0x0d, 0xa7, 0x40, 0x1d, 0x36, 0xda, 0x75, 0x0e, 0x33, 0xef, 0x20, 0x4a, 0x13,
0xb6, 0x08, 0xd3, 0x6d, 0xd0, 0xa3, 0xcc, 0x3b, 0x0f, 0x92, 0x89, 0x55, 0x41, 0x1d, 0x2d, 0xe9,
0xf6, 0x78, 0x92, 0xb8, 0xa7, 0x9c, 0xcd, 0x10, 0xfa, 0x1c, 0x74, 0x5f, 0x84, 0x69, 0x2c, 0xce,
0x2d, 0xad, 0x4d, 0x3a, 0xab, 0xdd, 0x87, 0x25, 0x7a, 0x37, 0x7f, 0x53, 0x88, 0x14, 0xd9, 0xdc,
0x01, 0x5d, 0x35, 0xa7, 0x9b, 0x60, 0xa8, 0xf6, 0x1e, 0xb7, 0x48, 0x9b, 0x74, 0xea, 0x6c, 0x9e,
0xa0, 0x16, 0xe8, 0xa9, 0x88, 0x02, 0x3f, 0x18, 0x5b, 0x95, 0x36, 0xe9, 0x18, 0x6c, 0x76, 0xb4,
0xbf, 0x10, 0xd0, 0x55, 0x5d, 0x4a, 0xa1, 0x7a, 0x12, 0x8b, 0x29, 0xca, 0x4d, 0x86, 0xb1, 0xcc,
0x8d, 0xdd, 0xd4, 0x45, 0x99, 0xc9, 0x30, 0xa6, 0xf7, 0xa1, 0x96, 0xf0, 0x8f, 0xa1, 0x40, 0xa7,
0x26, 0xcb, 0x0f, 0xb4, 0x09, 0x75, 0x2c, 0x3a, 0xec, 0x25, 0x56, 0xb5, 0xad, 0x75, 0x0c, 0x56,
0x9c, 0xd1, 0x5d, 0x70, 0x1a, 0xba, 0x69, 0x16, 0x73, 0xab, 0x86, 0xaa, 0x79, 0x82, 0x36, 0x40,
0x3b, 0xe3, 0x97, 0xd6, 0x0a, 0xe6, 0x65, 0x68, 0xff, 0x20, 0xb0, 0xbe, 0x38, 0x34, 0x7d, 0x06,
0xb5, 0x60, 0xe2, 0x5e, 0x70, 0xf5, 0x11, 0x1e, 0x2c, 0xaf, 0x67, 0x38, 0x70, 0x2f, 0x38, 0xcb,
0x29, 0xc4, 0x3f, 0xb9, 0x61, 0xaa, 0x76, 0x7f, 0x13, 0x7e, 0xec, 0x86, 0x29, 0xcb, 0x29, 0x89,
0x9f, 0xc6, 0xee, 0x49, 0x6a, 0x69, 0xb7, 0xe1, 0xef, 0xe4, 0x6b, 0x96, 0x53, 0x12, 0x8f, 0xe2,
0x2c, 0xe4, 0x38, 0xe8, 0x8d, 0xf8, 0x48, 0xbe, 0x66, 0x39, 0x65, 0x0f, 0xc0, 0x2c, 0x7b, 0x2c,
0x3e, 0xc7, 0xb0, 0x87, 0xbb, 0x9e, 0x7d, 0x8e, 0x61, 0x8f, 0xb6, 0x00, 0xa6, 0xf9, 0xc0, 0x72,
0x8d, 0x15, 0x5c, 0x63, 0x29, 0x63, 0x3b, 0xf3, 0x4a, 0xd2, 0xfe, 0x35, 0x9e, 0x2c, 0xf1, 0x9d,
0x82, 0x47, 0xff, 0xb7, 0x77, 0xb6, 0x0f, 0x0b, 0x12, 0xad, 0xdf, 0xe1, 0xf1, 0x09, 0xd4, 0x22,
0xce, 0xe3, 0x44, 0xad, 0xf6, 0x5e, 0x69, 0xf8, 0x11, 0xe7, 0xf1, 0x30, 0x3c, 0x11, 0x2c, 0x27,
0xec, 0x7d, 0xa8, 0xcf, 0x52, 0x74, 0x03, 0x56, 0x64, 0x52, 0xd5, 0x33, 0x99, 0x3a, 0xd1, 0x2d,
0x68, 0xc8, 0x5f, 0x81, 0x8f, 0x25, 0xc9, 0xb8, 0x2f, 0xe2, 0xb1, 0xfa, 0xdb, 0x96, 0xf2, 0xf6,
0x37, 0x0d, 0xfe, 0x3f, 0x92, 0x36, 0x7a, 0x3c, 0xbf, 0x69, 0x22, 0x96, 0x7f, 0x68, 0xe8, 0x4e,
0xb9, 0x72, 0x89, 0x31, 0x7d, 0x09, 0x55, 0x37, 0x4b, 0x27, 0x58, 0x67, 0xb5, 0xfb, 0xa8, 0xe4,
0xf0, 0x9a, 0xda, 0xd9, 0xc9, 0xd2, 0x09, 0xde, 0x5e, 0x14, 0xd0, 0x17, 0xa0, 0xf1, 0xd0, 0x57,
0x57, 0xd0, 0xbe, 0x43, 0xd7, 0x0f, 0x7d, 0x94, 0x49, 0xbc, 0xf9, 0x99, 0x40, 0x7d, 0x56, 0x88,
0xbe, 0x81, 0xea, 0x54, 0x8c, 0x73, 0x3f, 0xeb, 0xdd, 0xed, 0x7f, 0xe8, 0x8d, 0xc1, 0x9e, 0x18,
0x73, 0x86, 0x4a, 0x39, 0xd1, 0x19, 0xbf, 0xcc, 0xf7, 0x6b, 0x32, 0x8c, 0xed, 0xc7, 0x79, 0x07,
0x49, 0xd1, 0x3a, 0x54, 0xf7, 0x0f, 0xf6, 0xfb, 0x8d, 0xff, 0xa8, 0x0e, 0xda, 0xfb, 0xfe, 0x87,
0x06, 0x91, 0xc1, 0xf1, 0xc1, 0x51, 0xa3, 0xd2, 0xfc, 0x4a, 0x40, 0x57, 0xde, 0xe8, 0xeb, 0x05,
0x27, 0x5b, 0x7f, 0x9f, 0x46, 0x3e, 0x4b, 0x3e, 0x36, 0xc1, 0x38, 0xe3, 0x97, 0x03, 0x37, 0x99,
0xf0, 0x99, 0x99, 0x79, 0xc2, 0x7e, 0x8a, 0x8d, 0xae, 0x19, 0x5a, 0x03, 0xe3, 0x70, 0xb0, 0xc3,
0xfa, 0xbd, 0x45, 0x5b, 0x6f, 0xcd, 0xef, 0x57, 0x2d, 0xf2, 0xf3, 0xaa, 0x45, 0x7e, 0x5d, 0xb5,
0xc8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x58, 0xd6, 0x7d, 0x1f, 0x77, 0x05, 0x00, 0x00,
}
func (m *RPC) Marshal() (dAtA []byte, err error) {
@ -1271,11 +1271,11 @@ func (m *PeerInfo) MarshalTo(dAtA []byte) (int, error) {
i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerID)))
i += copy(dAtA[i:], m.PeerID)
}
if m.SignedAddrs != nil {
if m.SignedPeerRecord != nil {
dAtA[i] = 0x12
i++
i = encodeVarintRpc(dAtA, i, uint64(len(m.SignedAddrs)))
i += copy(dAtA[i:], m.SignedAddrs)
i = encodeVarintRpc(dAtA, i, uint64(len(m.SignedPeerRecord)))
i += copy(dAtA[i:], m.SignedPeerRecord)
}
if m.XXX_unrecognized != nil {
i += copy(dAtA[i:], m.XXX_unrecognized)
@ -1616,8 +1616,8 @@ func (m *PeerInfo) Size() (n int) {
l = len(m.PeerID)
n += 1 + l + sovRpc(uint64(l))
}
if m.SignedAddrs != nil {
l = len(m.SignedAddrs)
if m.SignedPeerRecord != nil {
l = len(m.SignedPeerRecord)
n += 1 + l + sovRpc(uint64(l))
}
if m.XXX_unrecognized != nil {
@ -2895,7 +2895,7 @@ func (m *PeerInfo) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SignedAddrs", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field SignedPeerRecord", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
@ -2922,9 +2922,9 @@ func (m *PeerInfo) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.SignedAddrs = append(m.SignedAddrs[:0], dAtA[iNdEx:postIndex]...)
if m.SignedAddrs == nil {
m.SignedAddrs = []byte{}
m.SignedPeerRecord = append(m.SignedPeerRecord[:0], dAtA[iNdEx:postIndex]...)
if m.SignedPeerRecord == nil {
m.SignedPeerRecord = []byte{}
}
iNdEx = postIndex
default:

View File

@ -50,7 +50,7 @@ message ControlPrune {
message PeerInfo {
optional bytes peerID = 1;
optional bytes signedAddrs = 2;
optional bytes signedPeerRecord = 2;
}
message TopicDescriptor {