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