From 3d5b7e3f5f92613836ed57d62414a01e4844795b Mon Sep 17 00:00:00 2001 From: Vyacheslav Andreykiv Date: Fri, 17 Apr 2026 13:12:46 -0700 Subject: [PATCH] Remove resolving IP to DNS for nextURI Summary: For some setups with different SSL configurations it is possible that SAN will not have hostname in it but only IP address. In this case rewrite nextURI to always use DNS name instead of IP breaks such setups. --- prestodb/redirect.py | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/prestodb/redirect.py b/prestodb/redirect.py index 7b374e2..b990b7c 100644 --- a/prestodb/redirect.py +++ b/prestodb/redirect.py @@ -9,16 +9,14 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function +from __future__ import absolute_import, division, print_function import abc - -from six import with_metaclass import ipaddress import socket from typing import Any, Text # NOQA + +from six import with_metaclass from six.moves.urllib_parse import urlparse @@ -28,22 +26,9 @@ def handle(self, url): pass -def _normalize_url_with_hostname(url): - # type: (Text) -> Text - # TODO: replace urlparse by more robust utf-8 handling code - parsed = urlparse(url.encode("utf-8")) - hostname = parsed.hostname.decode("utf-8") # type: ignore - try: - ipaddress.ip_address(hostname) - hostname = socket.gethostbyaddr(hostname)[0].encode("utf-8") - except ValueError: - return url - return parsed._replace(netloc=b"%s:%d" % (hostname, parsed.port)).geturl() - - class GatewayRedirectHandler(RedirectHandler): def handle(self, url): # type: (Text) -> Text if url is None: return None - return _normalize_url_with_hostname(url) + return url