aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/utils/human.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/utils/human.py')
-rw-r--r--mitmproxy/utils/human.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/mitmproxy/utils/human.py b/mitmproxy/utils/human.py
index b3934846..b21ac0b8 100644
--- a/mitmproxy/utils/human.py
+++ b/mitmproxy/utils/human.py
@@ -1,6 +1,8 @@
import datetime
import ipaddress
import time
+import functools
+import typing
SIZE_TABLE = [
("b", 1024 ** 0),
@@ -25,7 +27,14 @@ def pretty_size(size):
return "%s%s" % (size, SIZE_TABLE[0][0])
-def parse_size(s):
+@functools.lru_cache()
+def parse_size(s: typing.Optional[str]) -> typing.Optional[int]:
+ """
+ Parse a size with an optional k/m/... suffix.
+ Invalid values raise a ValueError. For added convenience, passing `None` returns `None`.
+ """
+ if s is None:
+ return None
try:
return int(s)
except ValueError:
@@ -71,7 +80,9 @@ def format_address(address: tuple) -> str:
"""
try:
host = ipaddress.ip_address(address[0])
- if host.version == 4:
+ if host.is_unspecified:
+ return "*:{}".format(address[1])
+ if isinstance(host, ipaddress.IPv4Address):
return "{}:{}".format(str(host), address[1])
# If IPv6 is mapped to IPv4
elif host.ipv4_mapped: