@@ -61,7 +61,7 @@ func (f RegisterableFunc) Register(ctx context.Context, srv *grpc.Server, mux *r
6161
6262// Server is a wrapper around the http.Server.
6363type Server struct {
64- http.Server
64+ * http.Server
6565 grpcProbe * prober.GRPCProbe
6666 reg * prometheus.Registry
6767 version string
@@ -150,17 +150,22 @@ func (s *Server) ListenAndServe(
150150 return fmt .Errorf ("failed to walk ui filesystem: %w" , err )
151151 }
152152
153- s .Server = http.Server {
153+ h2s := & http2.Server {}
154+ s .Server = & http.Server {
154155 Addr : addr ,
155- Handler : grpcHandlerFunc (
156+ Handler : h2c . NewHandler ( grpcHandlerFunc (
156157 srv ,
157158 fallbackNotFound (internalMux , uiHandler ),
158159 allowedCORSOrigins ,
159- ),
160+ ), h2s ),
160161 ReadTimeout : readTimeout ,
161162 WriteTimeout : writeTimeout ,
162163 }
163164
165+ if err := http2 .ConfigureServer (s .Server , h2s ); err != nil {
166+ return fmt .Errorf ("failed to configure HTTP/2 server: %w" , err )
167+ }
168+
164169 met .InitializeMetrics (srv )
165170 s .reg .MustRegister (met )
166171
@@ -285,13 +290,13 @@ func grpcHandlerFunc(grpcServer *grpc.Server, otherHandler http.Handler, allowed
285290 AllowCredentials : true ,
286291 })
287292
288- return corsMiddleware .Handler (h2c . NewHandler ( http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
293+ return corsMiddleware .Handler (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
289294 if strings .HasPrefix (r .Header .Get ("Content-Type" ), "application/grpc" ) {
290295 wrappedGrpc .ServeHTTP (w , r )
291296 return
292297 }
293298 otherHandler .ServeHTTP (w , r )
294- }), & http2. Server {}) )
299+ }))
295300}
296301
297302// InterceptorLogger adapts go-kit logger to interceptor logger.
0 commit comments