diff --git a/python/sglang/srt/server_args.py b/python/sglang/srt/server_args.py index bf20a196b..409065177 100644 --- a/python/sglang/srt/server_args.py +++ b/python/sglang/srt/server_args.py @@ -21,7 +21,7 @@ import logging import random from typing import List, Optional, Union -from sglang.srt.utils import is_hip +from sglang.srt.utils import is_hip, is_ipv6 logger = logging.getLogger(__name__) @@ -570,7 +570,10 @@ class ServerArgs: return cls(**{attr: getattr(args, attr) for attr in attrs}) def url(self): - return f"http://{self.host}:{self.port}" + if is_ipv6(self.host): + return f"http://[{self.host}]:{self.port}" + else: + return f"http://{self.host}:{self.port}" def check_server_args(self): assert ( diff --git a/python/sglang/srt/utils.py b/python/sglang/srt/utils.py index 702d6f980..1a08463b5 100644 --- a/python/sglang/srt/utils.py +++ b/python/sglang/srt/utils.py @@ -16,6 +16,7 @@ limitations under the License. """Common utilities.""" import base64 +import ipaddress import logging import os import pickle @@ -54,6 +55,14 @@ def is_hip() -> bool: return torch.version.hip is not None +def is_ipv6(address): + try: + ipaddress.IPv6Address(address) + return True + except ipaddress.AddressValueError: + return False + + def enable_show_time_cost(): global show_time_cost show_time_cost = True