diff options
| author | Adnan Maolood <[email protected]> | 2021-02-09 16:55:14 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2021-02-09 16:55:14 -0500 |
| commit | d2c70a33d5b182c78c373c246553720ed1e40a47 (patch) | |
| tree | 78aac8fecf92a781e67f89bc2f9dfa9d8c7d2f7b /client.go | |
| parent | client: Support IDNs (diff) | |
| download | go-gemini-d2c70a33d5b182c78c373c246553720ed1e40a47.tar.xz go-gemini-d2c70a33d5b182c78c373c246553720ed1e40a47.zip | |
client: Punycode request URL
Diffstat (limited to 'client.go')
| -rw-r--r-- | client.go | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -42,7 +42,21 @@ func (c *Client) Get(url string) (*Response, error) { // Do performs a Gemini request and returns a Gemini response. func (c *Client) Do(req *Request) (*Response, error) { - // Extract hostname + // Punycode request URL + if punycode, err := punycodeHost(req.URL.Host); err != nil { + return nil, err + } else { + // Make a copy of the request + _req := *req + req = &_req + _url := *req.URL + req.URL = &_url + + // Set the host + req.URL.Host = punycode + } + + // Extract hostname and punycode it hostname, port, err := net.SplitHostPort(req.Host) if err != nil { return nil, err |