Skip to content

Commit

Permalink
Minimal Dialer interface
Browse files Browse the repository at this point in the history
This replaces net.Dialer by an interface with only the required DialConext.

Fixes layeh#122
  • Loading branch information
icb- committed Sep 17, 2024
1 parent 1006025 commit 640c00d
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand All @@ -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
Expand All @@ -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 {
Expand Down

0 comments on commit 640c00d

Please sign in to comment.