ooni-probe-cli/internal/engine/experiment/tlsmiddlebox/dialer.go

46 lines
1.0 KiB
Go
Raw Permalink Normal View History

package tlsmiddlebox
//
// Custom TTL dialer
//
import (
"context"
"net"
"time"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/netxlite"
)
const timeout time.Duration = 15 * time.Second
func NewDialerTTLWrapper() model.Dialer {
return &dialerTTLWrapper{
Dialer: &net.Dialer{Timeout: timeout},
}
}
// dialerTTLWrapper wraps errors and also returns a TTL wrapped conn
type dialerTTLWrapper struct {
Dialer model.SimpleDialer
}
var _ model.Dialer = &dialerTTLWrapper{}
// DialContext implements model.Dialer.DialContext
func (d *dialerTTLWrapper) DialContext(ctx context.Context, network string, address string) (net.Conn, error) {
conn, err := d.Dialer.DialContext(ctx, network, address)
if err != nil {
return nil, netxlite.NewErrWrapper(netxlite.ClassifyGenericError, netxlite.ConnectOperation, err)
}
return &dialerTTLWrapperConn{
Conn: conn,
}, nil
}
// CloseIdleConnections implements model.Dialer.CloseIdleConnections
func (d *dialerTTLWrapper) CloseIdleConnections() {
// nothing to do here
}