package server import ( "fmt" "net/http" "time" ) // HTTP server configuration constants. const ( HTTPReadTimeout = 30 * time.Second HTTPWriteTimeout = 60 * time.Second HTTPMaxHeaderBytes = 8 << 10 // 8KB ) func (s *Server) serveUntilShutdown() { listenAddr := fmt.Sprintf(":%d", s.config.Port) s.httpServer = &http.Server{ Addr: listenAddr, ReadTimeout: HTTPReadTimeout, WriteTimeout: HTTPWriteTimeout, MaxHeaderBytes: HTTPMaxHeaderBytes, Handler: s, } s.SetupRoutes() s.log.Info("http begin listen", "listenaddr", listenAddr) if err := s.httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed { s.log.Error("listen error", "error", err) if s.cancelFunc != nil { s.cancelFunc() } } } // ServeHTTP implements http.Handler. func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { s.router.ServeHTTP(w, r) }