From 640c00dcf7d3dddced2b5f0777f2e8031453bfec Mon Sep 17 00:00:00 2001 From: Ian Bobbitt Date: Tue, 17 Sep 2024 16:25:47 +0000 Subject: [PATCH] Minimal Dialer interface This replaces net.Dialer by an interface with only the required DialConext. Fixes layeh/radius#122 --- client.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client.go b/client.go index 6c826bc..ef9e957 100644 --- a/client.go +++ b/client.go @@ -6,13 +6,17 @@ import ( "time" ) +type Dialer interface { + DialContext(context.Context, string, string) (net.Conn, error) +} + // Client is a RADIUS client that can exchange packets with a RADIUS server. type Client struct { // Network on which to make the connection. Defaults to "udp". Net string // Dialer to use when making the outgoing connections. - Dialer net.Dialer + Dialer Dialer // Interval on which to resend packet (zero or negative value means no // retry). @@ -33,6 +37,7 @@ type Client struct { var DefaultClient = &Client{ Retry: time.Second, MaxPacketErrors: 10, + Dialer: &net.Dialer{}, } // Exchange uses DefaultClient to send the given RADIUS packet to the server at @@ -58,6 +63,10 @@ func (c *Client) Exchange(ctx context.Context, packet *Packet, addr string) (*Pa connNet = "udp" } + if c.Dialer == nil { + c.Dialer = &net.Dialer{} + } + conn, err := c.Dialer.DialContext(ctx, connNet, addr) if err != nil { select {