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
|
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
|
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