summaryrefslogtreecommitdiff
path: root/finger
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-13 11:29:17 -0700
committertjp <tjp@ctrl-c.club>2024-01-13 11:29:17 -0700
commit4d861a2c395c0926b066014b92999d4dda454b2b (patch)
tree7bbf7d94cec2a5412a68b830c1e5223918d9bc82 /finger
parentde1490808fa6e4d6749ff29d20cc1a589ec476d1 (diff)
dial timeouts for clients, and catch up on test fixes
Diffstat (limited to 'finger')
-rw-r--r--finger/client.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/finger/client.go b/finger/client.go
index 0488b79..f89a788 100644
--- a/finger/client.go
+++ b/finger/client.go
@@ -2,6 +2,7 @@ package finger
import (
"bytes"
+ "context"
"errors"
"io"
"net"
@@ -18,7 +19,7 @@ import (
type Client struct{}
// RoundTrip sends a single finger request and returns its response.
-func (c Client) RoundTrip(request *types.Request) (*types.Response, error) {
+func (c Client) RoundTrip(ctx context.Context, request *types.Request) (*types.Response, error) {
if request.Scheme != "finger" && request.Scheme != "" {
return nil, errors.New("non-finger protocols not supported")
}
@@ -28,7 +29,7 @@ func (c Client) RoundTrip(request *types.Request) (*types.Response, error) {
host = net.JoinHostPort(host, "79")
}
- conn, err := net.Dial("tcp", host)
+ conn, err := (&net.Dialer{}).DialContext(ctx, "tcp", host)
if err != nil {
return nil, err
}
@@ -55,12 +56,12 @@ func (c Client) RoundTrip(request *types.Request) (*types.Response, error) {
}
// Fetch resolves a finger query.
-func (c Client) Fetch(query string) (*types.Response, error) {
+func (c Client) Fetch(ctx context.Context, query string) (*types.Response, error) {
req, err := ParseRequest(bytes.NewBufferString(query + "\r\n"))
if err != nil {
return nil, err
}
- return c.RoundTrip(req)
+ return c.RoundTrip(ctx, req)
}
func (c Client) IsRedirect(_ *types.Response) bool { return false }