File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -259,7 +259,14 @@ func (s *session[H]) doRequest(
259
259
}
260
260
261
261
// processResponses converts HeaderResponse to Header.
262
- func (s * session [H ]) processResponses (responses []* p2p_pb.HeaderResponse ) ([]H , error ) {
262
+ func (s * session [H ]) processResponses (responses []* p2p_pb.HeaderResponse ) (h []H , err error ) {
263
+ defer func () {
264
+ r := recover ()
265
+ if r != nil {
266
+ err = fmt .Errorf ("PANIC processing responses: %s" , r )
267
+ }
268
+ }()
269
+
263
270
hdrs , err := processResponses [H ](responses )
264
271
if err != nil {
265
272
return nil , err
Original file line number Diff line number Diff line change @@ -99,7 +99,15 @@ func (s *Subscriber[H]) Stop(context.Context) error {
99
99
// SetVerifier set given verification func as Header PubSub topic validator
100
100
// Does not punish peers if *header.VerifyError is given with Uncertain set to true.
101
101
func (s * Subscriber [H ]) SetVerifier (val func (context.Context , H ) error ) error {
102
- pval := func (ctx context.Context , p peer.ID , msg * pubsub.Message ) pubsub.ValidationResult {
102
+ pval := func (ctx context.Context , p peer.ID , msg * pubsub.Message ) (res pubsub.ValidationResult ) {
103
+ defer func () {
104
+ err := recover ()
105
+ if err != nil {
106
+ log .Errorf ("PANIC while unmarshalling or verifying header: %s" , err )
107
+ res = pubsub .ValidationReject
108
+ }
109
+ }()
110
+
103
111
hdr := header .New [H ]()
104
112
err := hdr .UnmarshalBinary (msg .Data )
105
113
if err != nil {
You can’t perform that action at this time.
0 commit comments