mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
authz: eliminate race during plugin removal from middleware
Also, this removes the use of a questionable golang range feature which corrects for mutation of a slice during iteration over that slice. This makes the filter operation easier to read and reason about. Signed-off-by: David Sheets <dsheets@docker.com>
This commit is contained in:
@@ -46,6 +46,19 @@ func (m *Middleware) SetPlugins(names []string) {
|
||||
m.mu.Unlock()
|
||||
}
|
||||
|
||||
// RemovePlugin removes a single plugin from this authz middleware chain
|
||||
func (m *Middleware) RemovePlugin(name string) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
plugins := m.plugins[:0]
|
||||
for _, authPlugin := range m.plugins {
|
||||
if authPlugin.Name() != name {
|
||||
plugins = append(plugins, authPlugin)
|
||||
}
|
||||
}
|
||||
m.plugins = plugins
|
||||
}
|
||||
|
||||
// WrapHandler returns a new handler function wrapping the previous one in the request chain.
|
||||
func (m *Middleware) WrapHandler(handler func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error) func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||
return func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||
|
||||
Reference in New Issue
Block a user