@@ -22,6 +22,7 @@ type inboundMessageScanner struct {
22
22
datastore repo.Datastore
23
23
service net.NetworkService
24
24
getHandler func (t pb.Message_MessageType ) func (peer.ID , * pb.Message , interface {}) (* pb.Message , error )
25
+ extractID func ([]byte ) (* peer.ID , error )
25
26
broadcast chan repo.Notifier
26
27
27
28
// Worker-handling dependencies
@@ -31,12 +32,27 @@ type inboundMessageScanner struct {
31
32
stopWorker chan bool
32
33
}
33
34
35
+ func peerIDExtractor (data []byte ) (* peer.ID , error ) {
36
+ pubkey , err := libp2p .UnmarshalPublicKey (data )
37
+ if err != nil {
38
+ log .Errorf ("err extracting peerID: %v" , err .Error ())
39
+ return nil , err
40
+ }
41
+ i , err := peer .IDFromPublicKey (pubkey )
42
+ if err != nil {
43
+ log .Errorf ("err extracting peerID: %v" , err .Error ())
44
+ return nil , err
45
+ }
46
+ return & i , nil
47
+ }
48
+
34
49
// StartInboundMsgScanner - start the notifier
35
50
func (n * OpenBazaarNode ) StartInboundMsgScanner () {
36
51
n .InboundMsgScanner = & inboundMessageScanner {
37
52
datastore : n .Datastore ,
38
53
service : n .Service ,
39
54
getHandler : n .Service .HandlerForMsgType ,
55
+ extractID : peerIDExtractor ,
40
56
broadcast : n .Broadcast ,
41
57
intervalDelay : n .scannerIntervalDelay (),
42
58
logger : logging .MustGetLogger ("inboundMessageScanner" ),
@@ -81,19 +97,13 @@ func (scanner *inboundMessageScanner) PerformTask() {
81
97
}
82
98
for _ , m := range msgs {
83
99
if m .MsgErr == ErrInsufficientFunds .Error () {
84
-
85
100
// Get handler for this msg type
86
101
handler := scanner .getHandler (pb .Message_MessageType (m .MessageType ))
87
102
if handler == nil {
88
103
log .Errorf ("err fetching handler for msg: %v" , pb .Message_MessageType (m .MessageType ))
89
104
continue
90
105
}
91
- pubkey , err := libp2p .UnmarshalPublicKey (m .PeerPubkey )
92
- if err != nil {
93
- log .Errorf ("Error processing message %s. Type %s: %s" , m , m .MessageType , err .Error ())
94
- continue
95
- }
96
- i , err := peer .IDFromPublicKey (pubkey )
106
+ i , err := scanner .extractID (m .PeerPubkey )
97
107
if err != nil {
98
108
log .Errorf ("Error processing message %s. Type %s: %s" , m , m .MessageType , err .Error ())
99
109
continue
@@ -107,9 +117,8 @@ func (scanner *inboundMessageScanner) PerformTask() {
107
117
continue
108
118
}
109
119
}
110
-
111
120
// Dispatch handler
112
- _ , err = handler (i , & msg .Msg , nil )
121
+ _ , err = handler (* i , & msg .Msg , nil )
113
122
if err != nil {
114
123
log .Debugf ("%d handle message error from %s: %s" , m .MessageType , m .PeerID , err )
115
124
continue
@@ -119,8 +128,6 @@ func (scanner *inboundMessageScanner) PerformTask() {
119
128
if err != nil {
120
129
log .Errorf ("err putting message : %v" , err )
121
130
}
122
-
123
131
}
124
132
}
125
-
126
133
}
0 commit comments