From da8ae29620811f3dc058e0e665d402a208a1fe6c Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 19 May 2017 15:42:22 -0400 Subject: [PATCH] Return MethodNotSupported when accessing unwatcheable resource with ?watch=true --- staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go index 7e2c972bc77..da466c2fc8a 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go @@ -292,7 +292,11 @@ func ListResource(r rest.Lister, rw rest.Watcher, scope RequestScope, forceWatch opts.FieldSelector = nameSelector } - if (opts.Watch || forceWatch) && rw != nil { + if opts.Watch || forceWatch { + if rw == nil { + scope.err(errors.NewMethodNotSupported(scope.Resource.GroupResource(), "watch"), w, req) + return + } // TODO: Currently we explicitly ignore ?timeout= and use only ?timeoutSeconds=. timeout := time.Duration(0) if opts.TimeoutSeconds != nil {