mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	httpserver: support QUIC reload
fix issue #958 Signed-off-by: Tw <tw19881113@gmail.com>
This commit is contained in:
		
							parent
							
								
									16250da3f0
								
							
						
					
					
						commit
						65cb966d38
					
				@ -145,8 +145,17 @@ func (s *Server) Listen() (net.Listener, error) {
 | 
			
		||||
	return ln.(*net.TCPListener), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListenPacket is a noop to implement the Server interface.
 | 
			
		||||
func (s *Server) ListenPacket() (net.PacketConn, error) { return nil, nil }
 | 
			
		||||
// ListenPacket creates udp connection for QUIC if it is enabled,
 | 
			
		||||
func (s *Server) ListenPacket() (net.PacketConn, error) {
 | 
			
		||||
	if QUIC {
 | 
			
		||||
		udpAddr, err := net.ResolveUDPAddr("udp", s.Server.Addr)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		return net.ListenUDP("udp", udpAddr)
 | 
			
		||||
	}
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Serve serves requests on ln. It blocks until ln is closed.
 | 
			
		||||
func (s *Server) Serve(ln net.Listener) error {
 | 
			
		||||
@ -172,15 +181,6 @@ func (s *Server) Serve(ln net.Listener) error {
 | 
			
		||||
		s.tlsGovChan = caddytls.RotateSessionTicketKeys(s.Server.TLSConfig)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if QUIC {
 | 
			
		||||
		go func() {
 | 
			
		||||
			err := s.quicServer.ListenAndServe()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Printf("[ERROR] listening for QUIC connections: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		}()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := s.Server.Serve(ln)
 | 
			
		||||
	if QUIC {
 | 
			
		||||
		s.quicServer.Close()
 | 
			
		||||
@ -188,8 +188,14 @@ func (s *Server) Serve(ln net.Listener) error {
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ServePacket is a noop to implement the Server interface.
 | 
			
		||||
func (s *Server) ServePacket(pc net.PacketConn) error { return nil }
 | 
			
		||||
// ServePacket serves QUIC requests on pc until it is closed.
 | 
			
		||||
func (s *Server) ServePacket(pc net.PacketConn) error {
 | 
			
		||||
	if QUIC {
 | 
			
		||||
		err := s.quicServer.Serve(pc.(*net.UDPConn))
 | 
			
		||||
		return fmt.Errorf("serving QUIC connections: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ServeHTTP is the entry point of all HTTP requests.
 | 
			
		||||
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user