rpc: fix method-name matched before maxMethodNameLength

This commit is contained in:
Weixie Cui 2026-05-23 23:46:56 +08:00
parent efe58eac00
commit b38effb7b0

View file

@ -502,6 +502,10 @@ func (h *handler) handleCallMsg(ctx *callProc, msg *jsonrpcMessage) *jsonrpcMess
// handleCall processes method calls. // handleCall processes method calls.
func (h *handler) handleCall(cp *callProc, msg *jsonrpcMessage) *jsonrpcMessage { func (h *handler) handleCall(cp *callProc, msg *jsonrpcMessage) *jsonrpcMessage {
// Check method name length
if len(msg.Method) > maxMethodNameLength {
return msg.errorResponse(&invalidRequestError{fmt.Sprintf("method name too long: %d > %d", len(msg.Method), maxMethodNameLength)})
}
if msg.isSubscribe() { if msg.isSubscribe() {
return h.handleSubscribe(cp, msg) return h.handleSubscribe(cp, msg)
} }
@ -512,11 +516,6 @@ func (h *handler) handleCall(cp *callProc, msg *jsonrpcMessage) *jsonrpcMessage
} }
return h.runMethod(cp.ctx, msg, h.unsubscribeCb, args) return h.runMethod(cp.ctx, msg, h.unsubscribeCb, args)
} }
// Check method name length
if len(msg.Method) > maxMethodNameLength {
return msg.errorResponse(&invalidRequestError{fmt.Sprintf("method name too long: %d > %d", len(msg.Method), maxMethodNameLength)})
}
callb, service, method := h.reg.callback(msg.Method) callb, service, method := h.reg.callback(msg.Method)
// If the method is not found, return an error. // If the method is not found, return an error.