aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2020-11-27 17:45:15 -0500
committerAdnan Maolood <[email protected]>2020-11-27 17:45:15 -0500
commite0ac1685d2e54e4f71ca12fc5677f243652da791 (patch)
tree66be47cf887d19c21e94e994b1b385fc00b60b3b
parentAdd context to requests (diff)
downloadgo-gemini-e0ac1685d2e54e4f71ca12fc5677f243652da791.tar.xz
go-gemini-e0ac1685d2e54e4f71ca12fc5677f243652da791.zip
Fix server name in TLS connections
-rw-r--r--client.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/client.go b/client.go
index 57a0b4e..c1b3f98 100644
--- a/client.go
+++ b/client.go
@@ -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