summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--tools/upip.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/tools/upip.py b/tools/upip.py
index db18a7427e..0070fd6195 100644
--- a/tools/upip.py
+++ b/tools/upip.py
@@ -105,7 +105,10 @@ warn_ussl = True
def url_open(url):
global warn_ussl
proto, _, host, urlpath = url.split('/', 3)
- ai = usocket.getaddrinfo(host, 443)
+ try:
+ ai = usocket.getaddrinfo(host, 443)
+ except OSError as e:
+ fatal("Unable to resolve %s (no Internet?)" % host, e)
#print("Address infos:", ai)
addr = ai[0][4]
@@ -124,13 +127,16 @@ def url_open(url):
l = s.readline()
protover, status, msg = l.split(None, 2)
if status != b"200":
+ s.close()
+ exc = ValueError(status)
if status == b"404":
- print("Package not found")
- raise ValueError(status)
+ fatal("Package not found", exc)
+ fatal("Unexpected error querying for package", exc)
while 1:
l = s.readline()
if not l:
- raise ValueError("Unexpected EOF")
+ s.close()
+ fatal("Unexpected EOF in HTTP headers", ValueError())
if l == b'\r\n':
break
@@ -144,8 +150,10 @@ def get_pkg_metadata(name):
return json.loads(s)
-def fatal(msg):
- print(msg)
+def fatal(msg, exc=None):
+ print("Error:", msg)
+ if exc and debug:
+ raise exc
sys.exit(1)
def install_pkg(pkg_spec, install_path):