diff options
author | Unknown <tolsen@limebits.com> | 2008-07-08 14:44:37 -0400 |
---|---|---|
committer | Unknown <tolsen@limebits.com> | 2008-07-08 14:44:37 -0400 |
commit | 75a1f6dd7de3288cfff624022b8ad21f699f8c30 (patch) | |
tree | 12eb185ca75b3e6899a59bd593b23fb359938ab7 | |
parent | 89043f50d83ae75f5121ec5c19d4ac99515944c1 (diff) | |
download | urllib2_kerberos-75a1f6dd7de3288cfff624022b8ad21f699f8c30.tar.gz |
fail kerberos auth after one attempt0.1.5
clean up context and reference
gracefully handle GSSError
-rw-r--r-- | urllib2_kerberos.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/urllib2_kerberos.py b/urllib2_kerberos.py index c43c198..ec54d4d 100644 --- a/urllib2_kerberos.py +++ b/urllib2_kerberos.py @@ -66,12 +66,14 @@ class HTTPKerberosAuthHandler(u2.BaseHandler): self.retried = 0 return None - if self.retried > 5: - raise HTTPError(req.get_full_url(), 401, "kerberos negotiate auth failed", - headers, None) + if self.retried > 0: + raise u2.HTTPError(req.get_full_url(), 401, "kerberos negotiate auth failed", + headers, None) self.retried += 1 + log.debug("retry count: %d" % self.retried) + log.debug("req.get_host() returned %s" % req.get_host()) result, self.context = k.authGSSClientInit("HTTP@%s" % req.get_host()) @@ -105,7 +107,9 @@ class HTTPKerberosAuthHandler(u2.BaseHandler): def clean_context(self): if self.context is not None: + log.debug("cleaning context") k.authGSSClientClean(self.context) + self.context = None def http_error_401(self, req, fp, code, msg, headers): log.debug("inside http_error_401") @@ -122,9 +126,14 @@ class HTTPKerberosAuthHandler(u2.BaseHandler): self.authenticate_server(resp.info()) 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 def test(): log.setLevel(logging.DEBUG) |