Fix Issue1368368 - prompt_user_passwd() in FancyURLopener masks 401 Unauthorized error page

This commit is contained in:
Senthil Kumaran 2010-06-18 15:08:18 +00:00
parent 2cd12528e4
commit 80f1b05971
2 changed files with 14 additions and 2 deletions

View File

@ -1866,7 +1866,8 @@ class FancyURLopener(URLopener):
else: else:
return self.http_error_default(url, fp, errcode, errmsg, headers) return self.http_error_default(url, fp, errcode, errmsg, headers)
def http_error_401(self, url, fp, errcode, errmsg, headers, data=None): def http_error_401(self, url, fp, errcode, errmsg, headers, data=None,
retry=False):
"""Error 401 -- authentication required. """Error 401 -- authentication required.
This function supports Basic authentication only.""" This function supports Basic authentication only."""
if not 'www-authenticate' in headers: if not 'www-authenticate' in headers:
@ -1882,13 +1883,17 @@ class FancyURLopener(URLopener):
if scheme.lower() != 'basic': if scheme.lower() != 'basic':
URLopener.http_error_default(self, url, fp, URLopener.http_error_default(self, url, fp,
errcode, errmsg, headers) errcode, errmsg, headers)
if not retry:
URLopener.http_error_default(self, url, fp, errcode, errmsg,
headers)
name = 'retry_' + self.type + '_basic_auth' name = 'retry_' + self.type + '_basic_auth'
if data is None: if data is None:
return getattr(self,name)(url, realm) return getattr(self,name)(url, realm)
else: else:
return getattr(self,name)(url, realm, data) return getattr(self,name)(url, realm, data)
def http_error_407(self, url, fp, errcode, errmsg, headers, data=None): def http_error_407(self, url, fp, errcode, errmsg, headers, data=None,
retry=False):
"""Error 407 -- proxy authentication required. """Error 407 -- proxy authentication required.
This function supports Basic authentication only.""" This function supports Basic authentication only."""
if not 'proxy-authenticate' in headers: if not 'proxy-authenticate' in headers:
@ -1904,6 +1909,9 @@ class FancyURLopener(URLopener):
if scheme.lower() != 'basic': if scheme.lower() != 'basic':
URLopener.http_error_default(self, url, fp, URLopener.http_error_default(self, url, fp,
errcode, errmsg, headers) errcode, errmsg, headers)
if not retry:
URLopener.http_error_default(self, url, fp, errcode, errmsg,
headers)
name = 'retry_proxy_' + self.type + '_basic_auth' name = 'retry_proxy_' + self.type + '_basic_auth'
if data is None: if data is None:
return getattr(self,name)(url, realm) return getattr(self,name)(url, realm)

View File

@ -446,6 +446,10 @@ C-API
Library Library
------- -------
- Issue #1368368: FancyURLOpener class changed to throw an Exception on wrong
password instead of presenting an interactive prompt. Older behavior can be
obtained by passing retry=True to http_error_xxx methods of FancyURLOpener.
- Issue #8720: fix regression caused by fix for #4050 by making getsourcefile - Issue #8720: fix regression caused by fix for #4050 by making getsourcefile
smart enough to find source files in the linecache. smart enough to find source files in the linecache.