MCPcopy
hub / github.com/caddyserver/certmagic / Present

Method Present

solvers.go:59–82  ·  view source on GitHub ↗

Present starts an HTTP server if none is already listening on s.address.

(ctx context.Context, _ acme.Challenge)

Source from the content-addressed store, hash-verified

57
58// Present starts an HTTP server if none is already listening on s.address.
59func (s *httpSolver) Present(ctx context.Context, _ acme.Challenge) error {
60 solversMu.Lock()
61 defer solversMu.Unlock()
62
63 si := getSolverInfo(s.address)
64 si.count++
65 if si.listener != nil {
66 return nil // already be served by us
67 }
68
69 // notice the unusual error handling here; we
70 // only continue to start a challenge server if
71 // we got a listener; in all other cases return
72 ln, err := robustTryListen(s.address)
73 if ln == nil {
74 return err
75 }
76
77 // successfully bound socket, so save listener and start key auth HTTP server
78 si.listener = ln
79 go s.serve(ctx, si)
80
81 return nil
82}
83
84// serve is an HTTP server that serves only HTTP challenge responses.
85func (s *httpSolver) serve(ctx context.Context, si *solverInfo) {

Callers 3

PresentMethod · 0.45
PresentMethod · 0.45
IssueMethod · 0.45

Calls 5

serveMethod · 0.95
getSolverInfoFunction · 0.85
robustTryListenFunction · 0.85
LockMethod · 0.65
UnlockMethod · 0.65

Tested by

no test coverage detected