mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	OncePerServerBlock may now return an error
This commit is contained in:
		
							parent
							
								
									a518049fa2
								
							
						
					
					
						commit
						691204ceed
					
				@ -66,9 +66,15 @@ func Load(filename string, input io.Reader) (Group, error) {
 | 
			
		||||
					// server config and the dispenser containing only
 | 
			
		||||
					// this directive's tokens.
 | 
			
		||||
					controller := &setup.Controller{
 | 
			
		||||
						Config:             &config,
 | 
			
		||||
						Dispenser:          parse.NewDispenserTokens(filename, tokens),
 | 
			
		||||
						OncePerServerBlock: func(f func()) { onces[dir.name].Do(f) },
 | 
			
		||||
						Config:    &config,
 | 
			
		||||
						Dispenser: parse.NewDispenserTokens(filename, tokens),
 | 
			
		||||
						OncePerServerBlock: func(f func() error) error {
 | 
			
		||||
							var err error
 | 
			
		||||
							onces[dir.name].Do(func() {
 | 
			
		||||
								err = f()
 | 
			
		||||
							})
 | 
			
		||||
							return err
 | 
			
		||||
						},
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					midware, err := dir.setup(controller)
 | 
			
		||||
 | 
			
		||||
@ -19,8 +19,11 @@ type Controller struct {
 | 
			
		||||
 | 
			
		||||
	// OncePerServerBlock is a function that executes f
 | 
			
		||||
	// exactly once per server block, no matter how many
 | 
			
		||||
	// hosts are associated with it.
 | 
			
		||||
	OncePerServerBlock func(f func())
 | 
			
		||||
	// hosts are associated with it. If it is the first
 | 
			
		||||
	// time, the function f is executed immediately
 | 
			
		||||
	// (not deferred) and may return an error which is
 | 
			
		||||
	// returned by OncePerServerBlock.
 | 
			
		||||
	OncePerServerBlock func(f func() error) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewTestController creates a new *Controller for
 | 
			
		||||
 | 
			
		||||
@ -55,9 +55,8 @@ func registerCallback(c *Controller, list *[]func() error) error {
 | 
			
		||||
		funcs = append(funcs, fn)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	c.OncePerServerBlock(func() {
 | 
			
		||||
	return c.OncePerServerBlock(func() error {
 | 
			
		||||
		*list = append(*list, funcs...)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user