@@ -14,6 +14,7 @@ import (
1414 "github.com/libp2p/go-libp2p/core/peer"
1515 "github.com/multiversx/mx-chain-communication-go/p2p"
1616 "github.com/multiversx/mx-chain-communication-go/p2p/data"
17+ "github.com/multiversx/mx-chain-communication-go/p2p/libp2p/disabled"
1718 "github.com/multiversx/mx-chain-core-go/core"
1819 "github.com/multiversx/mx-chain-core-go/core/check"
1920)
@@ -34,7 +35,6 @@ type ArgMessagesHandler struct {
3435 Marshaller p2p.Marshaller
3536 ConnMonitor ConnectionMonitor
3637 PeersRatingHandler p2p.PeersRatingHandler
37- Debugger p2p.Debugger
3838 SyncTimer p2p.SyncTimer
3939 PeerID core.PeerID
4040 NetworkType p2p.NetworkType
@@ -52,6 +52,7 @@ type messagesHandler struct {
5252 connMonitor ConnectionMonitor
5353 peersRatingHandler p2p.PeersRatingHandler
5454 debugger p2p.Debugger
55+ mutDebugger sync.RWMutex
5556 syncTimer p2p.SyncTimer
5657 peerID core.PeerID
5758 networkType p2p.NetworkType
@@ -81,7 +82,7 @@ func NewMessagesHandler(args ArgMessagesHandler) (*messagesHandler, error) {
8182 marshaller : args .Marshaller ,
8283 connMonitor : args .ConnMonitor ,
8384 peersRatingHandler : args .PeersRatingHandler ,
84- debugger : args . Debugger ,
85+ debugger : disabled . NewP2PDebugger () ,
8586 syncTimer : args .SyncTimer ,
8687 peerID : args .PeerID ,
8788 processors : make (map [string ]TopicProcessor ),
@@ -123,9 +124,6 @@ func checkArgMessagesHandler(args ArgMessagesHandler) error {
123124 if check .IfNil (args .PeersRatingHandler ) {
124125 return p2p .ErrNilPeersRatingHandler
125126 }
126- if check .IfNil (args .Debugger ) {
127- return p2p .ErrNilDebugger
128- }
129127 if check .IfNil (args .SyncTimer ) {
130128 return p2p .ErrNilSyncTimer
131129 }
@@ -443,6 +441,9 @@ func (handler *messagesHandler) validateMessageByTimestamp(msg p2p.MessageP2P) e
443441}
444442
445443func (handler * messagesHandler ) processDebugMessage (topic string , fromConnectedPeer core.PeerID , size uint64 , isRejected bool ) {
444+ handler .mutDebugger .RLock ()
445+ defer handler .mutDebugger .RUnlock ()
446+
446447 if fromConnectedPeer == handler .peerID {
447448 handler .debugger .AddOutgoingMessage (topic , size , isRejected )
448449 } else {
@@ -508,7 +509,9 @@ func (handler *messagesHandler) SendToConnectedPeer(topic string, buff []byte, p
508509 }
509510
510511 err = handler .directSender .Send (topic , buffToSend , peerID )
512+ handler .mutDebugger .RLock ()
511513 handler .debugger .AddOutgoingMessage (topic , uint64 (len (buffToSend )), err != nil )
514+ handler .mutDebugger .RUnlock ()
512515
513516 return err
514517}
@@ -575,7 +578,9 @@ func (handler *messagesHandler) ProcessReceivedMessage(message p2p.MessageP2P, f
575578 }
576579 }
577580
581+ handler .mutDebugger .RLock ()
578582 handler .debugger .AddIncomingMessage (msg .Topic (), uint64 (len (msg .Data ())), ! messageOk )
583+ handler .mutDebugger .RUnlock ()
579584
580585 if messageOk {
581586 handler .increaseRatingIfNeeded (msg , fromConnectedPeer )
@@ -690,6 +695,19 @@ func (handler *messagesHandler) UnJoinAllTopics() error {
690695 return errFound
691696}
692697
698+ // SetDebugger sets the debugger
699+ func (handler * messagesHandler ) SetDebugger (debugger p2p.Debugger ) error {
700+ if check .IfNil (debugger ) {
701+ return p2p .ErrNilDebugger
702+ }
703+
704+ handler .mutDebugger .Lock ()
705+ handler .debugger = debugger
706+ handler .mutDebugger .Unlock ()
707+
708+ return nil
709+ }
710+
693711// Close closes the messages handler
694712func (handler * messagesHandler ) Close () error {
695713 handler .cancelFunc ()
@@ -705,7 +723,9 @@ func (handler *messagesHandler) Close() error {
705723 }
706724
707725 handler .log .Debug ("closing messages handler's debugger..." )
726+ handler .mutDebugger .Lock ()
708727 errDebugger := handler .debugger .Close ()
728+ handler .mutDebugger .Unlock ()
709729 if errDebugger != nil {
710730 err = errDebugger
711731 handler .log .Warn ("messagesHandler.Close" ,
0 commit comments