Skip to content

Commit 50279a7

Browse files
authored
refactor(netxlite): use *Netx for creating QUIC dialers (#1251)
This diff is like 8a5edc2 but here we use *Netx to create QUIC dialers. While there, recognize that `WrapQUICDialer` could become a private function. The general idea of this patchset is to ensure we're not using duplicate code for constructing netxlite types, which is good to do now, because we're about to introduce new netxlite types for the network with which we communicate with the OONI backend. Reference issue: ooni/probe#2531
1 parent 8a5edc2 commit 50279a7

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

internal/netxlite/netx.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,6 @@ func (netx *Netx) maybeCustomUnderlyingNetwork() *MaybeCustomUnderlyingNetwork {
2222
return &MaybeCustomUnderlyingNetwork{netx.Underlying}
2323
}
2424

25-
// NewQUICDialerWithResolver is like [netxlite.NewQUICDialerWithResolver] but the constructed
26-
// [model.QUICDialer] uses the [model.UnderlyingNetwork] configured inside the [Netx] structure.
27-
func (n *Netx) NewQUICDialerWithResolver(listener model.UDPListener, logger model.DebugLogger,
28-
resolver model.Resolver, wrappers ...model.QUICDialerWrapper) (outDialer model.QUICDialer) {
29-
baseDialer := &quicDialerQUICGo{
30-
UDPListener: listener,
31-
provider: n.maybeCustomUnderlyingNetwork(),
32-
}
33-
return WrapQUICDialer(logger, resolver, baseDialer, wrappers...)
34-
}
35-
3625
// NewTLSHandshakerStdlib is like [netxlite.NewTLSHandshakerStdlib] but the constructed [model.TLSHandshaker]
3726
// uses the [model.UnderlyingNetwork] configured inside the [Netx] structure.
3827
func (n *Netx) NewTLSHandshakerStdlib(logger model.DebugLogger) model.TLSHandshaker {

internal/netxlite/quic.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,29 @@ import (
3030
//
3131
// Please, note that this fuunction will just ignore any nil wrapper.
3232
//
33-
// Unlike the dialer returned by WrapDialer, this dialer MAY attempt
33+
// Unlike the dialer returned by NewDialerWithResolver, this dialer MAY attempt
3434
// happy eyeballs, perform parallel dial attempts, and return an error
3535
// that aggregates all the errors that occurred.
36-
func NewQUICDialerWithResolver(listener model.UDPListener, logger model.DebugLogger,
36+
func (netx *Netx) NewQUICDialerWithResolver(listener model.UDPListener, logger model.DebugLogger,
3737
resolver model.Resolver, wrappers ...model.QUICDialerWrapper) (outDialer model.QUICDialer) {
3838
baseDialer := &quicDialerQUICGo{
3939
UDPListener: listener,
40+
provider: netx.maybeCustomUnderlyingNetwork(),
4041
}
41-
return WrapQUICDialer(logger, resolver, baseDialer, wrappers...)
42+
return wrapQUICDialer(logger, resolver, baseDialer, wrappers...)
43+
}
44+
45+
// NewQUICDialerWithResolver is equivalent to creating an empty [*Netx]
46+
// and calling its NewQUICDialerWithResolver method.
47+
func NewQUICDialerWithResolver(listener model.UDPListener, logger model.DebugLogger,
48+
resolver model.Resolver, wrappers ...model.QUICDialerWrapper) (outDialer model.QUICDialer) {
49+
netx := &Netx{Underlying: nil}
50+
return netx.NewQUICDialerWithResolver(listener, logger, resolver, wrappers...)
4251
}
4352

44-
// WrapQUICDialer is similar to NewQUICDialerWithResolver except that it takes as
53+
// wrapQUICDialer is similar to NewQUICDialerWithResolver except that it takes as
4554
// input an already constructed [model.QUICDialer] instead of creating one.
46-
func WrapQUICDialer(logger model.DebugLogger, resolver model.Resolver,
55+
func wrapQUICDialer(logger model.DebugLogger, resolver model.Resolver,
4756
baseDialer model.QUICDialer, wrappers ...model.QUICDialerWrapper) (outDialer model.QUICDialer) {
4857
outDialer = &quicDialerErrWrapper{
4958
QUICDialer: &quicDialerHandshakeCompleter{

0 commit comments

Comments
 (0)