From f65565edc14cf2876a463a4597400b416acaef52 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 5 Dec 2017 21:19:30 +0100 Subject: [PATCH] p2p/enr: make Set panic for encoding errors Nobody will ever check the return value of Set. Make it panic to avoid hidden bugs. --- p2p/enr/enr.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/p2p/enr/enr.go b/p2p/enr/enr.go index bb07168839..530d73d202 100644 --- a/p2p/enr/enr.go +++ b/p2p/enr/enr.go @@ -83,28 +83,29 @@ func (r *Record) Load(k Key) (bool, error) { return false, errors.New("record does not exist") } -func (r *Record) Set(k Key) error { +// Set adds or updates the given key in the record. +// It panics if the value can't be encoded. +func (r *Record) Set(k Key) { r.signature = nil blob, err := rlp.EncodeToBytes(k) if err != nil { - return err + panic(fmt.Errorf("enr: can't encode %s: %v", k.ENRKey(), err)) } for i, p := range r.pairs { if p.k == k.ENRKey() { // replace value of pair r.pairs[i].v = blob - return nil + return } else if p.k > k.ENRKey() { // insert pair before i-th elem el := pair{k.ENRKey(), blob} r.pairs = append(r.pairs, pair{}) copy(r.pairs[i+1:], r.pairs[i:]) r.pairs[i] = el - return nil + return } } r.pairs = append(r.pairs, pair{k.ENRKey(), blob}) - return nil } func (r Record) EncodeRLP(w io.Writer) error {