9a9a373
--- a/urllib2_kerberos.py
9a9a373
+++ b/urllib2_kerberos.py
9a9a373
@@ -62,8 +62,8 @@ class AbstractKerberosAuthHandler:
9a9a373
         host = req.get_host()
9a9a373
         log.debug("req.get_host() returned %s" % host)
9a9a373
9a9a373
-        tail, sep, head = host.rpartition(':')
9a9a373
-        domain = tail if tail else head
9a9a373
+        cindex = host.rfind(':')
9a9a373
+        domain = (cindex == -1) and host or host[:cindex]
9a9a373
9a9a373
         result, self.context = k.authGSSClientInit("HTTP@%s" % domain)
9a9a373
9a9a373
@@ -130,15 +130,15 @@ class AbstractKerberosAuthHandler:
9a9a373
             if resp.getcode() != 200:
9a9a373
                 self.authenticate_server(resp.info())
9a9a373
9a9a373
+            self.clean_context()
9a9a373
+            self.retried = 0
9a9a373
             return resp
9a9a373
9a9a373
         except k.GSSError, e:
9a9a373
             log.critical("GSSAPI Error: %s/%s" % (e[0][0], e[1][0]))
9a9a373
-            return None
9a9a373
-
9a9a373
-        finally:
9a9a373
             self.clean_context()
9a9a373
             self.retried = 0
9a9a373
+            return None
9a9a373
9a9a373
 class ProxyKerberosAuthHandler(u2.BaseHandler, AbstractKerberosAuthHandler):
9a9a373
     """Kerberos Negotiation handler for HTTP proxy auth