mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net/http: enable automatic HTTP/2 if TLSNextProto is nil
This enables HTTP/2 by default (for https only) if the user didn't configure anything in their NPN/ALPN map. If they're using SPDY or an alternate http2 or a newer http2 from x/net/http2, we do nothing and don't use the standard library's vendored copy of x/net/http2. Upstream remains golang.org/x/net/http2. Update #6891 Change-Id: I69a8957a021a00ac353f9d7fdb9a40a5b69f2199 Reviewed-on: https://go-review.googlesource.com/15828 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
7a3dcd2d0f
commit
20736fcab9
4 changed files with 35 additions and 3 deletions
|
|
@ -1806,7 +1806,8 @@ type Server struct {
|
|||
// standard logger.
|
||||
ErrorLog *log.Logger
|
||||
|
||||
disableKeepAlives int32 // accessed atomically.
|
||||
disableKeepAlives int32 // accessed atomically.
|
||||
nextProtoOnce sync.Once // guards initialization of TLSNextProto in Serve
|
||||
}
|
||||
|
||||
// A ConnState represents the state of a client connection to a server.
|
||||
|
|
@ -1896,6 +1897,7 @@ func (srv *Server) ListenAndServe() error {
|
|||
func (srv *Server) Serve(l net.Listener) error {
|
||||
defer l.Close()
|
||||
var tempDelay time.Duration // how long to sleep on accept failure
|
||||
srv.nextProtoOnce.Do(srv.setNextProtoDefaults)
|
||||
for {
|
||||
rw, e := l.Accept()
|
||||
if e != nil {
|
||||
|
|
@ -2052,6 +2054,14 @@ func (srv *Server) ListenAndServeTLS(certFile, keyFile string) error {
|
|||
return srv.Serve(tlsListener)
|
||||
}
|
||||
|
||||
func (srv *Server) setNextProtoDefaults() {
|
||||
// Enable HTTP/2 by default if the user hasn't otherwise
|
||||
// configured their TLSNextProto map.
|
||||
if srv.TLSNextProto == nil {
|
||||
http2ConfigureServer(srv, nil)
|
||||
}
|
||||
}
|
||||
|
||||
// TimeoutHandler returns a Handler that runs h with the given time limit.
|
||||
//
|
||||
// The new Handler calls h.ServeHTTP to handle each request, but if a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue