[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH rhel6-branch] Reset resolver after network device activation (#614001)



We need to reset resolver using our isys.resetResolver in rhel6
because curl is built without support for c-ares. If/when curl
supporting c-ares is pulled into rhel6, urlgrabber.reset_curl_obj()
call will be needed for resetting, so I also add the call to some
places where it is missing.
---
 iw/advanced_storage.py |    2 ++
 iw/task_gui.py         |    2 ++
 kickstart.py           |    1 +
 network.py             |   12 ++++++++----
 4 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/iw/advanced_storage.py b/iw/advanced_storage.py
index 79af83c..38ed181 100644
--- a/iw/advanced_storage.py
+++ b/iw/advanced_storage.py
@@ -27,6 +27,7 @@ import iutil
 import network
 import storage.fcoe
 import storage.iscsi
+import urlgrabber.grabber
 
 def addFcoeDrive(anaconda):
     (dxml, dialog) = gui.getGladeWidget("fcoe-config.glade", "fcoeDialog")
@@ -104,6 +105,7 @@ def addIscsiDrive(anaconda):
     if not network.hasActiveNetDev():
         if not anaconda.intf.enableNetwork():
             return gtk.RESPONSE_CANCEL
+        urlgrabber.grabber.reset_curl_obj()
 
     (dxml, dialog) = gui.getGladeWidget("iscsi-config.glade", "iscsiDialog")
     gui.addFrame(dialog)
diff --git a/iw/task_gui.py b/iw/task_gui.py
index 6330b2b..5bce75c 100644
--- a/iw/task_gui.py
+++ b/iw/task_gui.py
@@ -45,6 +45,7 @@ def setupRepo(anaconda, repo):
     if repo.needsNetwork() and not network.hasActiveNetDev():
         if not anaconda.intf.enableNetwork():
             return False
+        urlgrabber.grabber.reset_curl_obj()
     try:
         anaconda.backend.doRepoSetup(anaconda, thisrepo=repo.id, fatalerrors=False)
         anaconda.backend.doSackSetup(anaconda, thisrepo=repo.id, fatalerrors=False)
@@ -309,6 +310,7 @@ class RepoEditor:
                       "networking, but there was an error enabling the "
                       "network on your system."))
                 return False
+            urlgrabber.grabber.reset_curl_obj()
 
         import tempfile
         dest = tempfile.mkdtemp("", repo.name.replace(" ", ""), "/mnt")
diff --git a/kickstart.py b/kickstart.py
index 07f4073..2041686 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -154,6 +154,7 @@ def getEscrowCertificate(anaconda, url):
                                         custom_icon="error",
                                         custom_buttons=[_("_Exit installer")])
             sys.exit(1)
+    urlgrabber.grabber.reset_curl_obj()
 
     log.info("escrow: downloading %s" % (url,))
 
diff --git a/network.py b/network.py
index f3cb5e7..57e618a 100644
--- a/network.py
+++ b/network.py
@@ -726,18 +726,22 @@ class Network:
                 waited_devs_props[iface] = device_props_iface
 
         i = 0
+        reset_resolver = False
         while True:
             for dev, device_props_iface in waited_devs_props.items():
                 state = device_props_iface.Get(isys.NM_DEVICE_IFACE, "State")
                 if state == isys.NM_DEVICE_STATE_ACTIVATED:
                     waited_devs_props.pop(dev)
-            if len(waited_devs_props) == 0:
-                return []
-            if i >= CONNECTION_TIMEOUT:
-                return waited_devs_props.keys()
+                    reset_resolver = True
+            if len(waited_devs_props) == 0 or i >= CONNECTION_TIMEOUT:
+                break
             i += 1
             time.sleep(1)
 
+        if reset_resolver:
+            isys.resetResolv()
+        return waited_devs_props.keys()
+
     # write out current configuration state and wait for NetworkManager
     # to bring the device up, watch NM state and return to the caller
     # once we have a state
-- 
1.6.0.6


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]