refactor(netxlite): allow easy QUIC dialer chain customization (#771)

Like the previous diff, but for creating QUIC dialers.

See https://github.com/ooni/probe/issues/2121.
This commit is contained in:
Simone Basso
2022-05-31 20:28:25 +02:00
committed by GitHub
parent 69fd0c5119
commit dd5655eaee
4 changed files with 60 additions and 52 deletions
+12 -14
View File
@@ -131,28 +131,26 @@ func NewQUICDialer(config Config) model.QUICDialer {
if config.FullResolver == nil {
config.FullResolver = NewResolver(config)
}
var ql model.QUICListener = &netxlite.QUICListenerStdlib{}
ql = &netxlite.ErrorWrapperQUICListener{QUICListener: ql}
ql := netxlite.NewQUICListener()
if config.ReadWriteSaver != nil {
ql = &quicdialer.QUICListenerSaver{
QUICListener: ql,
Saver: config.ReadWriteSaver,
}
}
var d model.QUICDialer = &netxlite.QUICDialerQUICGo{
QUICListener: ql,
var logger model.DebugLogger = model.DiscardLogger
if config.Logger != nil {
logger = config.Logger
}
d = &netxlite.ErrorWrapperQUICDialer{
QUICDialer: d,
extensions := []netxlite.QUICDialerWrapper{
func(dialer model.QUICDialer) model.QUICDialer {
if config.TLSSaver != nil {
dialer = quicdialer.HandshakeSaver{Saver: config.TLSSaver, QUICDialer: dialer}
}
return dialer
},
}
if config.TLSSaver != nil {
d = quicdialer.HandshakeSaver{Saver: config.TLSSaver, QUICDialer: d}
}
d = &netxlite.QUICDialerResolver{
Resolver: config.FullResolver,
Dialer: d,
}
return d
return netxlite.NewQUICDialerWithResolver(ql, logger, config.FullResolver, extensions...)
}
// NewTLSDialer creates a new TLSDialer from the specified config