aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknown <tolsen@limebits.com>2008-07-08 14:44:37 -0400
committerUnknown <tolsen@limebits.com>2008-07-08 14:44:37 -0400
commit75a1f6dd7de3288cfff624022b8ad21f699f8c30 (patch)
tree12eb185ca75b3e6899a59bd593b23fb359938ab7
parent89043f50d83ae75f5121ec5c19d4ac99515944c1 (diff)
downloadurllib2_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.py15
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)