dependency-inject quic.Listen and quic.ListenAddr in h2quic.Server

This commit is contained in:
Marten Seemann
2017-07-08 16:02:34 +08:00
parent e21f74d317
commit 79c7ed4ed1
2 changed files with 26 additions and 34 deletions

View File

@@ -29,6 +29,12 @@ type remoteCloser interface {
CloseRemote(protocol.ByteCount)
}
// allows mocking of quic.Listen and quic.ListenAddr
var (
quicListen = quic.Listen
quicListenAddr = quic.ListenAddr
)
// Server is a HTTP2 server listening for QUIC connections.
type Server struct {
*http.Server
@@ -90,9 +96,9 @@ func (s *Server) serveImpl(tlsConfig *tls.Config, conn net.PacketConn) error {
var ln quic.Listener
var err error
if conn == nil {
ln, err = quic.ListenAddr(s.Addr, tlsConfig, &config)
ln, err = quicListenAddr(s.Addr, tlsConfig, &config)
} else {
ln, err = quic.Listen(conn, tlsConfig, &config)
ln, err = quicListen(conn, tlsConfig, &config)
}
if err != nil {
s.listenerMutex.Unlock()