diff options
author | Unknown <tolsen@limebits.com> | 2008-07-08 14:44:37 -0400 |
---|---|---|
committer | Matěj Cepl <mcepl@cepl.eu> | 2023-04-29 18:19:45 +0200 |
commit | 7b2458f363935ae02a5749182d34a4f84e976920 (patch) | |
tree | 1f5b524cc61308b3d601203dd5b154c790c8ac2e | |
parent | 46bab372600a2632e627a1c38b2398fcaa1a188e (diff) | |
download | urllib2_kerberos-7b2458f363935ae02a5749182d34a4f84e976920.tar.gz |
fail kerberos auth after one attempt
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 0ee1cc0..fb06f01 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) |