Matthew Holt
					
					5 years ago
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: 2A349DD577D586A5
						
					
				
			
		
		
		
	
		
			
				 2 changed files with 
15 additions and 
2 deletions
			 
			
		 
		
			
				- 
					
					
					 
					modules/caddyhttp/app.go
				
 
			
				- 
					
					
					 
					modules/caddyhttp/server.go
				
 
			
		
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -250,6 +250,13 @@ func (app *App) Provision(ctx caddy.Context) error { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if err != nil { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return fmt.Errorf("server %s: setting up TLS connection policies: %v", srvName, err) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// if there is no idle timeout, set a sane default; users have complained
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// before that aggressive CDNs leave connections open until the server
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// closes them, so if we don't close them it leads to resource exhaustion
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if srv.IdleTimeout == 0 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								srv.IdleTimeout = defaultIdleTimeout | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return nil | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -458,6 +465,12 @@ func (app *App) httpsPort() int { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return app.HTTPSPort | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					// defaultIdleTimeout is the default HTTP server timeout
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					// for closing idle connections; useful to avoid resource
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					// exhaustion behind hungry CDNs, for example (we've had
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					// several complaints without this).
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					const defaultIdleTimeout = caddy.Duration(5 * time.Minute) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					// Interface guards
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					var ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_ caddy.App         = (*App)(nil) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -59,8 +59,8 @@ type Server struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						WriteTimeout caddy.Duration `json:"write_timeout,omitempty"` | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// IdleTimeout is the maximum time to wait for the next request
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// when keep-alives are enabled. If zero, ReadTimeout is used.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// If both are zero, there is no timeout.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// when keep-alives are enabled. If zero, a default timeout of
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// 5m is applied to help avoid resource exhaustion.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						IdleTimeout caddy.Duration `json:"idle_timeout,omitempty"` | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						// MaxHeaderBytes is the maximum size to parse from a client's
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |