MCPcopy
hub / github.com/caddyserver/caddy / GetUpstreams

Method GetUpstreams

modules/caddyhttp/reverseproxy/upstreams.go:493–521  ·  view source on GitHub ↗
(r *http.Request)

Source from the content-addressed store, hash-verified

491}
492
493func (mu MultiUpstreams) GetUpstreams(r *http.Request) ([]*Upstream, error) {
494 var upstreams []*Upstream
495
496 for i, src := range mu.sources {
497 select {
498 case <-r.Context().Done():
499 return upstreams, context.Canceled
500 default:
501 }
502
503 up, err := src.GetUpstreams(r)
504 if err != nil {
505 if c := mu.logger.Check(zapcore.ErrorLevel, "upstream source returned error"); c != nil {
506 c.Write(
507 zap.Int("source_idx", i),
508 zap.Error(err),
509 )
510 }
511 } else if len(up) == 0 {
512 if c := mu.logger.Check(zapcore.WarnLevel, "upstream source returned 0 upstreams"); c != nil {
513 c.Write(zap.Int("source_idx", i))
514 }
515 } else {
516 upstreams = append(upstreams, up...)
517 }
518 }
519
520 return upstreams, nil
521}
522
523// UpstreamResolver holds the set of addresses of DNS resolvers of
524// upstream addresses

Callers

nothing calls this directly

Calls 5

GetUpstreamsMethod · 0.65
CheckMethod · 0.45
WriteMethod · 0.45
IntMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected