feat(netxlite): introduce null dialers (#489)
See https://github.com/ooni/probe/issues/1591
This commit is contained in:
parent
f2e3e5cc08
commit
26360f5a29
|
@ -277,3 +277,23 @@ func (c *dialerErrWrapperConn) Close() error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ErrNoDialer indicates that no dialer is configured.
|
||||
var ErrNoDialer = errors.New("no configured dialer")
|
||||
|
||||
// NewNullDialer returns a dialer that always fails.
|
||||
func NewNullDialer() Dialer {
|
||||
return &nullDialer{}
|
||||
}
|
||||
|
||||
type nullDialer struct{}
|
||||
|
||||
var _ Dialer = &nullDialer{}
|
||||
|
||||
func (*nullDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
return nil, ErrNoDialer
|
||||
}
|
||||
|
||||
func (*nullDialer) CloseIdleConnections() {
|
||||
// nothing to do
|
||||
}
|
||||
|
|
|
@ -462,3 +462,15 @@ func TestDialerErrWrapperConn(t *testing.T) {
|
|||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestNewNullDialer(t *testing.T) {
|
||||
dialer := NewNullDialer()
|
||||
conn, err := dialer.DialContext(context.Background(), "", "")
|
||||
if !errors.Is(err, ErrNoDialer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if conn != nil {
|
||||
t.Fatal("expected nil conn")
|
||||
}
|
||||
dialer.CloseIdleConnections() // does not crash
|
||||
}
|
||||
|
|
|
@ -342,3 +342,23 @@ func (h *tlsHandshakerErrWrapper) Handshake(
|
|||
}
|
||||
return tlsconn, state, nil
|
||||
}
|
||||
|
||||
// ErrNoTLSDialer indicates that no TLS dialer is configured.
|
||||
var ErrNoTLSDialer = errors.New("no configured TLS dialer")
|
||||
|
||||
// NewNullTLSDialer returns a TLS dialer that always fails.
|
||||
func NewNullTLSDialer() TLSDialer {
|
||||
return &nullTLSDialer{}
|
||||
}
|
||||
|
||||
type nullTLSDialer struct{}
|
||||
|
||||
var _ TLSDialer = &nullTLSDialer{}
|
||||
|
||||
func (*nullTLSDialer) DialTLSContext(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
return nil, ErrNoTLSDialer
|
||||
}
|
||||
|
||||
func (*nullTLSDialer) CloseIdleConnections() {
|
||||
// nothing to do
|
||||
}
|
||||
|
|
|
@ -536,3 +536,15 @@ func TestTLSHandshakerErrWrapper(t *testing.T) {
|
|||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestNewNullTLSDialer(t *testing.T) {
|
||||
dialer := NewNullTLSDialer()
|
||||
conn, err := dialer.DialTLSContext(context.Background(), "", "")
|
||||
if !errors.Is(err, ErrNoTLSDialer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if conn != nil {
|
||||
t.Fatal("expected nil conn")
|
||||
}
|
||||
dialer.CloseIdleConnections() // does not crash
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user