Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions dataclients/kubernetes/admission/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ func Handler(admitter admitter) http.HandlerFunc {
return
}

defer r.Body.Close()

body, err := io.ReadAll(r.Body)
if err != nil {
log.Errorf("Failed to read request: %v", err)
Expand Down
8 changes: 6 additions & 2 deletions filters/scheduler/lifo.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,9 @@ func (l *lifoFilter) GetQueue() *scheduler.Queue {

// Close will cleanup underlying queues
func (l *lifoFilter) Close() error {
l.queue.Close()
if l.queue != nil {
l.queue.Close()
}
return nil
}

Expand Down Expand Up @@ -286,7 +288,9 @@ func (l *lifoGroupFilter) GetQueue() *scheduler.Queue {

// Close will cleanup underlying queues
func (l *lifoGroupFilter) Close() error {
l.queue.Close()
if l.queue != nil {
l.queue.Close()
}
return nil
}

Expand Down
22 changes: 16 additions & 6 deletions routing/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,13 @@ func processTreePredicates(r *Route, predicateList []*eskip.Predicate) error {
// ValidateRoute processes a route definition for the routing table.
// This function is exported to be used by validation webhooks.
func ValidateRoute(o *Options, def *eskip.Route) (*Route, error) {
return processRouteDef(o, mapPredicates(o.Predicates), def)
route, err := processRouteDef(o, mapPredicates(o.Predicates), def)
if err != nil {
return nil, err
}

defer closeFilters(route.Filters)
return route, nil
}

// processes a route definition for the routing table
Expand Down Expand Up @@ -563,15 +569,19 @@ type routeTable struct {
func (rt *routeTable) close() {
rt.once.Do(func() {
for _, route := range rt.routes {
for _, f := range route.Filters {
if fc, ok := f.Filter.(filters.FilterCloser); ok {
fc.Close()
}
}
closeFilters(route.Filters)
}
})
}

func closeFilters(rfs []*RouteFilter) {
for _, f := range rfs {
if fc, ok := f.Filter.(filters.FilterCloser); ok {
fc.Close()
}
}
}

// receives the next version of the routing table on the output channel,
// when an update is received on one of the data clients.
func receiveRouteMatcher(o Options, out chan<- *routeTable, quit <-chan struct{}) {
Expand Down