mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-04-27 14:57:41 +00:00
Don't ask for same password twice
This commit is contained in:
parent
6e1846ea9d
commit
1aa6812bad
1 changed files with 20 additions and 13 deletions
|
|
@ -54,21 +54,28 @@ def get_password(username, resource, _lock=threading.Lock()):
|
||||||
|
|
||||||
def _password_from_cache(username, host):
|
def _password_from_cache(username, host):
|
||||||
'''internal cache'''
|
'''internal cache'''
|
||||||
return password_cache.get((username, host), None)
|
rv = password_cache.get((username, host), None)
|
||||||
|
if isinstance(rv, BaseException):
|
||||||
|
raise rv
|
||||||
|
return rv
|
||||||
|
|
||||||
with _lock:
|
with _lock:
|
||||||
host = urlparse.urlsplit(resource).hostname
|
try:
|
||||||
for func in (_password_from_cache, _password_from_command,
|
host = urlparse.urlsplit(resource).hostname
|
||||||
_password_from_netrc, _password_from_keyring,
|
for func in (_password_from_cache, _password_from_command,
|
||||||
_password_from_prompt):
|
_password_from_netrc, _password_from_keyring,
|
||||||
password = func(username, host)
|
_password_from_prompt):
|
||||||
if password is not None:
|
password = func(username, host)
|
||||||
logger.debug('Got password for {} from {}'
|
if password is not None:
|
||||||
.format(username, func.__doc__))
|
logger.debug('Got password for {} from {}'
|
||||||
break
|
.format(username, func.__doc__))
|
||||||
|
break
|
||||||
password_cache[(username, host)] = password
|
except (click.Abort, KeyboardInterrupt) as e:
|
||||||
return password
|
password_cache[(username, host)] = e
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
password_cache[(username, host)] = password
|
||||||
|
return password
|
||||||
|
|
||||||
|
|
||||||
def _password_from_prompt(username, host):
|
def _password_from_prompt(username, host):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue