geektutu/7days-golang · error
rpc server: service/method request ill-formed:
Error message
rpc server: service/method request ill-formed:
What it means
Request-routing guard in findService: the serviceMethod string has no '.' separator, so it can never be a valid "ServiceName.MethodName" pair. It fires for malformed request headers sent by the client, e.g. calling a method without its service prefix.
Source
Thrown at gee-rpc/day3-service/server.go:110
mtype *methodType
svc *service
}
func (server *Server) readRequestHeader(cc codec.Codec) (*codec.Header, error) {
var h codec.Header
if err := cc.ReadHeader(&h); err != nil {
if err != io.EOF && err != io.ErrUnexpectedEOF {
log.Println("rpc server: read header error:", err)
}
return nil, err
}
return &h, nil
}
func (server *Server) findService(serviceMethod string) (svc *service, mtype *methodType, err error) {
dot := strings.LastIndex(serviceMethod, ".")
if dot < 0 {
err = errors.New("rpc server: service/method request ill-formed: " + serviceMethod)
return
}
serviceName, methodName := serviceMethod[:dot], serviceMethod[dot+1:]
svci, ok := server.serviceMap.Load(serviceName)
if !ok {
err = errors.New("rpc server: can't find service " + serviceName)
return
}
svc = svci.(*service)
mtype = svc.method[methodName]
if mtype == nil {
err = errors.New("rpc server: can't find method " + methodName)
}
return
}
func (server *Server) readRequest(cc codec.Codec) (*request, error) {
h, err := server.readRequestHeader(cc)View on GitHub (pinned to cf36443821)
Solutions
- Call methods with the full "ServiceName.MethodName" string, e.g. "DemoService.Div".
- Check the client's serviceMethod argument for typos or missing dot separators.
- Have clients validate the method path before sending the request.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at gee-rpc/day3-service/server.go:110 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of geektutu/7days-golang@cf36443821 (2026-09-03).
Data as JSON: /api/errors/39f096b342ecc416.
Report an issue: GitHub.