client: Punycode request URL

This commit is contained in:
Adnan Maolood
2021-02-09 16:55:14 -05:00
parent 79e0296bed
commit d2c70a33d5
2 changed files with 34 additions and 1 deletions

View File

@@ -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