[Kimchi-devel] [PATCH v5 2/3] Fix verification of remote ISO

Christy Perez christy at linux.vnet.ibm.com
Wed Aug 13 20:21:15 UTC 2014


Currently the entire ISO is grabbed, which times out.
Use httplib to connect to the server and just get
the head of the http object.

Signed-off-by: Christy Perez <christy at linux.vnet.ibm.com>
---
 src/kimchi/utils.py | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
index 9ed8802..0977b9f 100644
--- a/src/kimchi/utils.py
+++ b/src/kimchi/utils.py
@@ -28,9 +28,10 @@
 import traceback
 import urllib2
 import xml.etree.ElementTree as ET
+from httplib import HTTPConnection, HTTPException
 from multiprocessing import Process, Queue
 from threading import Timer
-
+from urlparse import urlparse
 from cherrypy.lib.reprconf import Parser
 
 from kimchi.asynctask import AsyncTask
@@ -140,12 +141,25 @@ def import_module(module_name):
 
 def check_url_path(path):
     try:
-        code = urllib2.urlopen(path).getcode()
+        code = ''
+        parse_result = urlparse(path)
+        server_name = parse_result.netloc
+        urlpath = parse_result.path
+        if not urlpath:
+            # Just a server, as with a repo.
+            code = urllib2.urlopen(path).getcode()
+        else:
+            # socket.gaierror could be raised,
+            #   which is a child class of IOError
+            conn = HTTPConnection(server_name, timeout=15)
+            # Don't try to get the whole file:
+            conn.request('HEAD', path)
+            code = conn.getresponse().status
+            conn.close()
         if code != 200:
             return False
-    except (urllib2.URLError, ValueError):
+    except (urllib2.URLError, HTTPException, IOError, ValueError):
         return False
-
     return True
 
 
-- 
1.9.3




More information about the Kimchi-devel mailing list