Defer loading directives until needed (fix for previous commit)

This change is still experimental.
This commit is contained in:
Matthew Holt 2016-08-25 00:15:18 -06:00
parent 5a691fbaf5
commit 17709a7d3f
No known key found for this signature in database
GPG key ID: 0D97CC73664F4D03
3 changed files with 8 additions and 7 deletions

View file

@ -455,7 +455,7 @@ func startWithListenerFds(cdyfile Input, inst *Instance, restartFds map[string]r
return err
}
err = executeDirectives(inst, cdyfile.Path(), stype.Directives, sblocks)
err = executeDirectives(inst, cdyfile.Path(), stype.Directives(), sblocks)
if err != nil {
return err
}

View file

@ -26,7 +26,7 @@ func init() {
flag.BoolVar(&QUIC, "quic", false, "Use experimental QUIC")
caddy.RegisterServerType(serverType, caddy.ServerType{
Directives: directives,
Directives: func() []string { return directives },
DefaultInput: func() caddy.Input {
if Port == DefaultPort && Host != "" {
// by leaving the port blank in this case we give auto HTTPS

View file

@ -79,7 +79,7 @@ func ValidDirectives(serverType string) []string {
if err != nil {
return nil
}
return stype.Directives
return stype.Directives()
}
// ServerListener pairs a server to its listener and/or packetconn.
@ -145,10 +145,11 @@ func RegisterServerType(typeName string, srv ServerType) {
// ServerType contains information about a server type.
type ServerType struct {
// List of directives, in execution order, that are
// valid for this server type. Directives should be
// one word if possible and lower-cased.
Directives []string
// Function that returns the list of directives, in
// execution order, that are valid for this server
// type. Directives should be one word if possible
// and lower-cased.
Directives func() []string
// DefaultInput returns a default config input if none
// is otherwise loaded. This is optional, but highly