diff options
| author | Adnan Maolood <[email protected]> | 2020-11-27 17:45:15 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2020-11-27 17:45:15 -0500 |
| commit | e0ac1685d2e54e4f71ca12fc5677f243652da791 (patch) | |
| tree | 66be47cf887d19c21e94e994b1b385fc00b60b3b | |
| parent | Add context to requests (diff) | |
| download | go-gemini-e0ac1685d2e54e4f71ca12fc5677f243652da791.tar.xz go-gemini-e0ac1685d2e54e4f71ca12fc5677f243652da791.zip | |
Fix server name in TLS connections
| -rw-r--r-- | client.go | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -85,6 +85,13 @@ func (c *Client) Do(req *Request) (*Response, error) { } func (c *Client) do(req *Request, via []*Request) (*Response, error) { + // Extract hostname + colonPos := strings.LastIndex(req.Host, ":") + if colonPos == -1 { + colonPos = len(req.Host) + } + hostname := req.Host[:colonPos] + // Connect to the host config := &tls.Config{ InsecureSkipVerify: true, @@ -95,6 +102,7 @@ func (c *Client) do(req *Request, via []*Request) (*Response, error) { VerifyConnection: func(cs tls.ConnectionState) error { return c.verifyConnection(req, cs) }, + ServerName: hostname, } netConn, err := (&net.Dialer{}).DialContext(req.Context, "tcp", req.Host) if err != nil { @@ -166,6 +174,7 @@ func (c *Client) do(req *Request, via []*Request) (*Response, error) { target = req.URL.ResolveReference(target) redirect := NewRequestFromURL(target) + redirect.Context = req.Context if c.CheckRedirect != nil { if err := c.CheckRedirect(redirect, via); err != nil { return resp, err |