Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
wzshiming committed Oct 31, 2020
1 parent 07bf219 commit 6e5e487
Showing 1 changed file with 32 additions and 12 deletions.
44 changes: 32 additions & 12 deletions components/stream/handler/http2/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,31 +25,42 @@ func NewServer(handler http.Handler, tlsConfig tls.TLS) *server {
return s
}

var h2 = http2.Server{}

func (s *server) serve(ctx context.Context, listen stream.StreamListener, handler http.Handler) error {
baseContext := func(stream.StreamListener) context.Context {
return ctx
}

var err error
var tlsConfig *tls.Config
if s.tlsConfig != nil {
tlsConfig = s.tlsConfig.TLS()
if tlsConfig != nil {
tlsConfig = tlsConfig.Clone()
}
}

svc := http.Server{
Handler: handler,
BaseContext: baseContext,
TLSConfig: s.tlsConfig.TLS(),
}

svc.Handler = h2c.NewHandler(svc.Handler, &h2)

err := http2.ConfigureServer(&svc, &h2)
if err != nil {
return err
TLSConfig: tlsConfig,
}

go func() {
<-ctx.Done()
svc.Shutdown(context.Background())
}()
if svc.TLSConfig != nil {
err = svc.ServeTLS(listen, "", "")
svc.TLSConfig.NextProtos = strSliceContainsOrSet(svc.TLSConfig.NextProtos, "h2")
listen = tls.NewListener(listen, svc.TLSConfig)
} else {
err = svc.Serve(listen)
var h2 http2.Server
svc.Handler = h2c.NewHandler(svc.Handler, &h2)
err := http2.ConfigureServer(&svc, &h2)
if err != nil {
return err
}
}
err = svc.Serve(listen)
if err != nil && !listener.IsClosedConnError(err) {
return err
}
Expand All @@ -63,3 +74,12 @@ func (s *server) ServeStream(ctx context.Context, stm stream.Stream) {
return
}
}

func strSliceContainsOrSet(ss []string, s string) []string {
for _, v := range ss {
if v == s {
return ss
}
}
return append(ss, s)
}

0 comments on commit 6e5e487

Please sign in to comment.