diff options
| author | Andrew Donald Kennedy <grkvlt@apache.org> | 2010-07-31 23:46:15 +0000 |
|---|---|---|
| committer | Andrew Donald Kennedy <grkvlt@apache.org> | 2010-07-31 23:46:15 +0000 |
| commit | 43cb63667d6ddf2bc4a39f4ad1e1910ed5d0abc8 (patch) | |
| tree | 9cb6439a884a202559e307b321238e4a1ecdeec2 /java | |
| parent | f4e6a71348753a99fbe99c4a8aabf29a55422ed5 (diff) | |
| download | qpid-python-43cb63667d6ddf2bc4a39f4ad1e1910ed5d0abc8.tar.gz | |
QPID-2668: Improve PlainPasswordPrincipalDatabase lock management
Applied patch from Sorin Suciu <ssuciu@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@981103 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java index 8665e579ba..cea4e90c31 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java +++ b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java @@ -179,39 +179,28 @@ public class PlainPasswordFilePrincipalDatabase implements PrincipalDatabase throw new AccountNotFoundException(principal.getName()); } + char[] orig = user.getPassword(); + _userUpdate.lock(); try { - try - { - _userUpdate.lock(); - char[] orig = user.getPassword(); - user.setPassword(password); + user.setPassword(password); - try - { - savePasswordFile(); - } - catch (IOException e) - { - _logger.error("Unable to save password file, password change for user '" + principal + "' discarded"); - //revert the password change - user.setPassword(orig); - return false; - } - return true; - } - finally - { - if (_userUpdate.isHeldByCurrentThread()) - { - _userUpdate.unlock(); - } - } + savePasswordFile(); + + return true; } - catch (Exception e) + catch (IOException e) { + _logger.error("Unable to save password file due to '"+e.getMessage() + +"', password change for user '" + principal + "' discarded"); + //revert the password change + user.setPassword(orig); return false; } + finally + { + _userUpdate.unlock(); + } } public boolean createPrincipal(Principal principal, char[] password) |
