Skip to content

Commit a61157d

Browse files
[vm/network] Fix byte corruption on network manager (#164)
* update to [email protected] * fix byte corruption on network manager
1 parent c324f17 commit a61157d

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

vm/network.go

+13-6
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ func (n *NetworkManager) routeIncomingMessage(msg []byte) ([]byte, NetworkHandle
131131
if l == 0 {
132132
return nil, nil, false
133133
}
134-
handlerID := msg[l-1]
134+
handlerID := msg[0]
135135
handler, ok := n.handlers[handlerID]
136-
return msg[:l-1], handler, ok
136+
return msg[1:], handler, ok
137137
}
138138

139139
func (n *NetworkManager) handleSharedRequestID(
@@ -344,7 +344,7 @@ func (w *WrappedAppSender) SendAppRequest(
344344
requestID uint32,
345345
appRequestBytes []byte,
346346
) error {
347-
appRequestBytes = append(appRequestBytes, w.handler)
347+
appRequestBytes = w.createMessageBytes(appRequestBytes)
348348
for nodeID := range nodeIDs {
349349
newRequestID := w.n.getSharedRequestID(w.handler, nodeID, requestID)
350350
if err := w.n.sender.SendAppRequest(
@@ -384,7 +384,7 @@ func (w *WrappedAppSender) SendAppResponse(
384384
func (w *WrappedAppSender) SendAppGossip(ctx context.Context, appGossipBytes []byte) error {
385385
return w.n.sender.SendAppGossip(
386386
ctx,
387-
append(appGossipBytes, w.handler),
387+
w.createMessageBytes(appGossipBytes),
388388
)
389389
}
390390

@@ -396,7 +396,7 @@ func (w *WrappedAppSender) SendAppGossipSpecific(
396396
return w.n.sender.SendAppGossipSpecific(
397397
ctx,
398398
nodeIDs,
399-
append(appGossipBytes, w.handler),
399+
w.createMessageBytes(appGossipBytes),
400400
)
401401
}
402402

@@ -420,7 +420,7 @@ func (w *WrappedAppSender) SendCrossChainAppRequest(
420420
ctx,
421421
chainID,
422422
requestID,
423-
append(appRequestBytes, w.handler),
423+
w.createMessageBytes(appRequestBytes),
424424
)
425425
}
426426

@@ -441,3 +441,10 @@ func (w *WrappedAppSender) SendCrossChainAppResponse(
441441
// requestID is associated with which handler.
442442
return w.n.sender.SendCrossChainAppResponse(ctx, chainID, requestID, appResponseBytes)
443443
}
444+
445+
func (w *WrappedAppSender) createMessageBytes(src []byte) []byte {
446+
messageBytes := make([]byte, 1+len(src))
447+
messageBytes[0] = w.handler
448+
copy(messageBytes[1:], src)
449+
return messageBytes
450+
}

0 commit comments

Comments
 (0)