Skip to content

Commit f1437f7

Browse files
dsymondsdfawley
authored andcommitted
server: Improve error message when an unknown method is invoked. (#2723)
Previously only `unknown service <x>` was returned, which is misleading when the service is known but the method is unknown.
1 parent 9a2caaf commit f1437f7

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

server.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,7 +1246,8 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
12461246
service := sm[:pos]
12471247
method := sm[pos+1:]
12481248

1249-
if srv, ok := s.m[service]; ok {
1249+
srv, knownService := s.m[service]
1250+
if knownService {
12501251
if md, ok := srv.md[method]; ok {
12511252
s.processUnaryRPC(t, stream, srv, md, trInfo)
12521253
return
@@ -1261,11 +1262,16 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
12611262
s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo)
12621263
return
12631264
}
1265+
var errDesc string
1266+
if !knownService {
1267+
errDesc = fmt.Sprintf("unknown service %v", service)
1268+
} else {
1269+
errDesc = fmt.Sprintf("unknown method %v for service %v", method, service)
1270+
}
12641271
if trInfo != nil {
1265-
trInfo.tr.LazyLog(&fmtStringer{"Unknown service %v", []interface{}{service}}, true)
1272+
trInfo.tr.LazyPrintf("%s", errDesc)
12661273
trInfo.tr.SetError()
12671274
}
1268-
errDesc := fmt.Sprintf("unknown service %v", service)
12691275
if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {
12701276
if trInfo != nil {
12711277
trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true)

0 commit comments

Comments
 (0)